13 #define epicsExportSharedSymbols 35 PutDoneThread::PutDoneThread()
40 PutDoneThread::~PutDoneThread()
46 void PutDoneThread::start()
48 thread = std::tr1::shared_ptr<epicsThread>(
new epicsThread(
57 void PutDoneThread::stop()
63 waitForCommand.signal();
71 if(notifyPutRequester->isOnQueue)
return;
72 notifyPutRequester->isOnQueue =
true;
73 notifyPutQueue.push(notifyPutRequester);
75 waitForCommand.signal();
78 void PutDoneThread::run()
82 waitForCommand.wait();
88 if(!notifyPutQueue.empty())
95 notifyPutRequester = reqPtr.get();
101 if(notifyPutRequester!=
NULL)
104 if(channelPut) channelPut->notifyClient();
108 waitForStop.signal();
CAChannelPutWPtr channelPut
TODO only here because of the Lockable.
A lock for multithreading.
LIBCOM_API unsigned int epicsStdCall epicsThreadGetStackSize(epicsThreadStackSizeClass size)
std::tr1::shared_ptr< PutDoneThread > PutDoneThreadPtr
#define epicsThreadPriorityLow
Extended replacement for the Posix exit and atexit routines.
std::tr1::shared_ptr< CAChannelPut > CAChannelPutPtr
std::tr1::weak_ptr< NotifyPutRequester > NotifyPutRequesterWPtr
std::tr1::shared_ptr< NotifyPutRequester > NotifyPutRequesterPtr