13 #define epicsExportSharedSymbols 35 MonitorEventThread::MonitorEventThread()
40 MonitorEventThread::~MonitorEventThread()
45 void MonitorEventThread::start()
47 thread = std::tr1::shared_ptr<epicsThread>(
new epicsThread(
55 void MonitorEventThread::stop()
61 waitForCommand.signal();
70 if(notifyMonitorRequester->isOnQueue)
return;
71 notifyMonitorRequester->isOnQueue =
true;
72 notifyMonitorQueue.push(notifyMonitorRequester);
74 waitForCommand.signal();
77 void MonitorEventThread::run()
81 waitForCommand.wait();
87 if(!notifyMonitorQueue.empty())
91 notifyMonitorQueue.pop();
94 notifyMonitorRequester = reqPtr.get();
100 if(notifyMonitorRequester!=
NULL)
103 if(channelMonitor) channelMonitor->notifyClient();
107 waitForStop.signal();
std::tr1::shared_ptr< MonitorEventThread > MonitorEventThreadPtr
TODO only here because of the Lockable.
A lock for multithreading.
LIBCOM_API unsigned int epicsStdCall epicsThreadGetStackSize(epicsThreadStackSizeClass size)
std::tr1::shared_ptr< NotifyMonitorRequester > NotifyMonitorRequesterPtr
#define epicsThreadPriorityLow
Extended replacement for the Posix exit and atexit routines.
std::tr1::shared_ptr< CAChannelMonitor > CAChannelMonitorPtr
std::tr1::weak_ptr< NotifyMonitorRequester > NotifyMonitorRequesterWPtr
CAChannelMonitorWPtr channelMonitor