Go to the documentation of this file.
26 #ifndef __OgreThreadDefinesPoco_H__
27 #define __OgreThreadDefinesPoco_H__
29 #define OGRE_TOKEN_PASTE(x, y) x ## y
30 #define OGRE_TOKEN_PASTE_EXTRA(x, y) OGRE_TOKEN_PASTE(x, y)
31 #define OGRE_AUTO_MUTEX mutable Poco::Mutex OGRE_AUTO_MUTEX_NAME
32 #define OGRE_LOCK_AUTO_MUTEX Poco::Mutex::ScopedLock ogreAutoMutexLock(OGRE_AUTO_MUTEX_NAME)
33 #define OGRE_MUTEX(name) mutable Poco::Mutex name
34 #define OGRE_STATIC_MUTEX(name) static Poco::Mutex name
35 #define OGRE_STATIC_MUTEX_INSTANCE(name) Poco::Mutex name
36 #define OGRE_LOCK_MUTEX(name) Poco::Mutex::ScopedLock OGRE_TOKEN_PASTE_EXTRA(ogrenameLock, __LINE__) (name)
37 #define OGRE_LOCK_MUTEX_NAMED(mutexName, lockName) Poco::Mutex::ScopedLock lockName(mutexName)
39 #define OGRE_AUTO_SHARED_MUTEX mutable Poco::Mutex *OGRE_AUTO_MUTEX_NAME
40 #define OGRE_LOCK_AUTO_SHARED_MUTEX assert(OGRE_AUTO_MUTEX_NAME); Poco::Mutex::ScopedLock ogreAutoMutexLock(*OGRE_AUTO_MUTEX_NAME)
41 #define OGRE_NEW_AUTO_SHARED_MUTEX assert(!OGRE_AUTO_MUTEX_NAME); OGRE_AUTO_MUTEX_NAME = new Poco::Mutex()
42 #define OGRE_DELETE_AUTO_SHARED_MUTEX assert(OGRE_AUTO_MUTEX_NAME); delete OGRE_AUTO_MUTEX_NAME
43 #define OGRE_COPY_AUTO_SHARED_MUTEX(from) assert(!OGRE_AUTO_MUTEX_NAME); OGRE_AUTO_MUTEX_NAME = from
44 #define OGRE_SET_AUTO_SHARED_MUTEX_NULL OGRE_AUTO_MUTEX_NAME = 0
45 #define OGRE_MUTEX_CONDITIONAL(mutex) if (mutex)
46 #define OGRE_THREAD_SYNCHRONISER(sync) Poco::Condition sync
47 #define OGRE_THREAD_WAIT(sync, mutex, lock) sync.wait(mutex)
48 #define OGRE_THREAD_NOTIFY_ONE(sync) sync.signal()
49 #define OGRE_THREAD_NOTIFY_ALL(sync) sync.broadcast()
51 #define OGRE_RW_MUTEX(name) mutable Poco::RWLock name
52 #define OGRE_LOCK_RW_MUTEX_READ(name) Poco::RWLock::ScopedLock ogrenameLock(name, false)
53 #define OGRE_LOCK_RW_MUTEX_WRITE(name) Poco::RWLock::ScopedLock ogrenameLock(name, true)
55 #define OGRE_THREAD_POINTER(T, var) Poco::ThreadLocal<SharedPtr<T> > var
56 #define OGRE_THREAD_POINTER_INIT(var) var()
57 #define OGRE_THREAD_POINTER_VAR(T, var) Poco::ThreadLocal<SharedPtr<T> > var
58 #define OGRE_THREAD_POINTER_GET(var) var.get().get()
59 #define OGRE_THREAD_POINTER_SET(var, expr) do { var.get().setNull(); var.get().bind(expr); } while (0)
60 #define OGRE_THREAD_POINTER_DELETE(var) var.get().setNull()
62 #define OGRE_THREAD_TYPE Poco::Thread
63 #define OGRE_THREAD_CREATE(name, worker) Poco::Thread* name = OGRE_NEW_T(Poco::Thread, MEMCATEGORY_GENERAL)(); name->start(worker)
64 #define OGRE_THREAD_DESTROY(name) OGRE_DELETE_T(name, Thread, MEMCATEGORY_GENERAL)
65 #define OGRE_THREAD_HARDWARE_CONCURRENCY Poco::Environment::processorCount()
66 #define OGRE_THREAD_CURRENT_ID (size_t)Poco::Thread::current()
67 #define OGRE_THREAD_WORKER_INHERIT : public Poco::Runnable
70 #define OGRE_THREAD_SLEEP(ms) Poco::Thread::sleep(ms)
71 #define OGRE_THREAD_ID_TYPE size_t
72 #define OGRE_THREAD_YIELD Poco::Thread::yield()
Copyright © 2012 Torus Knot Software Ltd

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Fri Dec 20 2013 11:13:45