diff options
author | Travis CI <zmoelnig@travis-ci.umlaeute.mur.at> | 2015-03-17 22:54:19 +0000 |
---|---|---|
committer | Travis CI <zmoelnig@travis-ci.umlaeute.mur.at> | 2015-03-17 22:54:19 +0000 |
commit | 15b30fe20b401d079c2b3c6a8e77eee827813de3 (patch) | |
tree | 3a4e10aa2ec06ac1d3cb7de6a87cadd07a9d5f16 /Gem/develop/include/Gem/Utils/SynchedWorkerThread.h | |
parent | 356f94fc355f36c16e48555d10c2377dff4b7554 (diff) |
Gem 096ed6ef786b7a9d6e11a437ff8526619c89a1fd osx/x86_64
built 'master:096ed6ef786b7a9d6e11a437ff8526619c89a1fd' for osx/x86_64
Diffstat (limited to 'Gem/develop/include/Gem/Utils/SynchedWorkerThread.h')
-rw-r--r-- | Gem/develop/include/Gem/Utils/SynchedWorkerThread.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/Gem/develop/include/Gem/Utils/SynchedWorkerThread.h b/Gem/develop/include/Gem/Utils/SynchedWorkerThread.h new file mode 100644 index 0000000..6f5135e --- /dev/null +++ b/Gem/develop/include/Gem/Utils/SynchedWorkerThread.h @@ -0,0 +1,65 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Synchedworkerthread.h + - part of GEM + - a worker thread that automatically dequeues in the main thread + + Copyright (c) 2011-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef _INCLUDE__GEM_GEM_SYNCHEDWORKERTHREAD_H_ +#define _INCLUDE__GEM_GEM_SYNCHEDWORKERTHREAD_H_ + +#include "Utils/WorkerThread.h" + +namespace gem { namespace thread { + class GEM_EXTERN SynchedWorkerThread : public WorkerThread { + private: + class PIMPL; + PIMPL*m_pimpl; + friend class PIMPL; + /* dummy implementations */ + SynchedWorkerThread(const SynchedWorkerThread&); + SynchedWorkerThread&operator=(const SynchedWorkerThread&); + + public: + SynchedWorkerThread(bool autostart=true); + virtual ~SynchedWorkerThread(void); + + /* + * turn on "polling" mode + * when in polling mode, the calling thread has to call 'dequeue()' in order to + * deqeue any DONE data + * when in pushing mode, the data is pushed automatically within the RTE main thread + * + * returns TRUE is now in polling mode, or FALSE if now in pushing mode + * (might be different from what was requested) + * + * this MUST be called from the main thread + */ + virtual bool setPolling(bool value=true); + + /** + * deqeues the entire DONE queue + * returns the number of elements dequeued + */ + virtual unsigned int dequeue(void); + + protected: + // this get's called from the main thread(!) with each + // finished data chunk + virtual void done(id_t ID, void*data) = 0; + + ////// + // tell RTE to call back asap + virtual void signal(void); + + };};}; + + +#endif /* _INCLUDE__GEM_GEM_SYNCHEDWORKERTHREAD_H_ */ |