Go to the documentation of this file.
26 #ifndef __OgreThreadDefinesBoost_H__
27 #define __OgreThreadDefinesBoost_H__
29 #define OGRE_TOKEN_PASTE(x, y) x ## y
30 #define OGRE_TOKEN_PASTE_EXTRA(x, y) OGRE_TOKEN_PASTE(x, y)
32 #if BOOST_THREAD_VERSION < 4
33 #define OGRE_LOCK_AUTO_MUTEX boost::recursive_mutex::scoped_lock ogreAutoMutexLock(OGRE_AUTO_MUTEX_NAME)
34 #define OGRE_LOCK_MUTEX(name) boost::recursive_mutex::scoped_lock OGRE_TOKEN_PASTE_EXTRA(ogrenameLock, __LINE__) (name)
35 #define OGRE_LOCK_MUTEX_NAMED(mutexName, lockName) boost::recursive_mutex::scoped_lock lockName(mutexName)
36 #define OGRE_THREAD_SYNCHRONISER(sync) boost::condition sync
37 #define OGRE_THREAD_SLEEP(ms) boost::this_thread::sleep(boost::posix_time::millisec(ms))
39 #define OGRE_LOCK_AUTO_MUTEX boost::unique_lock<boost::recursive_mutex> ogreAutoMutexLock(OGRE_AUTO_MUTEX_NAME)
40 #define OGRE_LOCK_MUTEX(name) boost::unique_lock<boost::recursive_mutex> OGRE_TOKEN_PASTE_EXTRA(ogrenameLock, __LINE__) (name)
41 #define OGRE_LOCK_MUTEX_NAMED(mutexName, lockName) boost::unique_lock<boost::recursive_mutex> lockName(mutexName)
42 #define OGRE_THREAD_SYNCHRONISER(sync) boost::condition_variable_any sync
43 #define OGRE_THREAD_SLEEP(ms) boost::this_thread::sleep_for(boost::chrono::milliseconds(ms))
46 #define OGRE_AUTO_MUTEX mutable boost::recursive_mutex OGRE_AUTO_MUTEX_NAME
47 #define OGRE_MUTEX(name) mutable boost::recursive_mutex name
48 #define OGRE_STATIC_MUTEX(name) static boost::recursive_mutex name
49 #define OGRE_STATIC_MUTEX_INSTANCE(name) boost::recursive_mutex name
51 #define OGRE_AUTO_SHARED_MUTEX mutable boost::recursive_mutex *OGRE_AUTO_MUTEX_NAME
52 #define OGRE_LOCK_AUTO_SHARED_MUTEX assert(OGRE_AUTO_MUTEX_NAME); boost::recursive_mutex::scoped_lock ogreAutoMutexLock(*OGRE_AUTO_MUTEX_NAME)
53 #define OGRE_NEW_AUTO_SHARED_MUTEX assert(!OGRE_AUTO_MUTEX_NAME); OGRE_AUTO_MUTEX_NAME = new boost::recursive_mutex()
54 #define OGRE_DELETE_AUTO_SHARED_MUTEX do { assert(OGRE_AUTO_MUTEX_NAME); delete OGRE_AUTO_MUTEX_NAME; } while (0)
55 #define OGRE_COPY_AUTO_SHARED_MUTEX(from) assert(!OGRE_AUTO_MUTEX_NAME); OGRE_AUTO_MUTEX_NAME = from
56 #define OGRE_SET_AUTO_SHARED_MUTEX_NULL OGRE_AUTO_MUTEX_NAME = 0
57 #define OGRE_MUTEX_CONDITIONAL(mutex) if (mutex)
58 #define OGRE_THREAD_WAIT(sync, mutex, lock) sync.wait(lock)
59 #define OGRE_THREAD_NOTIFY_ONE(sync) sync.notify_one()
60 #define OGRE_THREAD_NOTIFY_ALL(sync) sync.notify_all()
62 #define OGRE_RW_MUTEX(name) mutable boost::shared_mutex name
63 #define OGRE_LOCK_RW_MUTEX_READ(name) boost::shared_lock<boost::shared_mutex> ogrenameLock(name)
64 #define OGRE_LOCK_RW_MUTEX_WRITE(name) boost::unique_lock<boost::shared_mutex> ogrenameLock(name)
66 #define OGRE_THREAD_POINTER(T, var) boost::thread_specific_ptr<T> var
67 #define OGRE_THREAD_POINTER_INIT(var) var(&deletePtr)
68 #define OGRE_THREAD_POINTER_VAR(T, var) boost::thread_specific_ptr<T> var (&deletePtr<T>)
69 #define OGRE_THREAD_POINTER_SET(var, expr) var.reset(expr)
70 #define OGRE_THREAD_POINTER_GET(var) var.get()
71 #define OGRE_THREAD_POINTER_DELETE(var) var.reset(0)
73 #define OGRE_THREAD_TYPE boost::thread
74 #define OGRE_THREAD_CREATE(name, worker) boost::thread* name = OGRE_NEW_T(boost::thread, MEMCATEGORY_GENERAL)(worker)
75 #define OGRE_THREAD_DESTROY(name) OGRE_DELETE_T(name, thread, MEMCATEGORY_GENERAL)
76 #define OGRE_THREAD_HARDWARE_CONCURRENCY boost::thread::hardware_concurrency()
77 #define OGRE_THREAD_CURRENT_ID boost::this_thread::get_id()
78 #define OGRE_THREAD_WORKER_INHERIT
80 #define OGRE_THREAD_ID_TYPE boost::thread::id
81 #define OGRE_THREAD_YIELD boost::this_thread::yield()
Copyright © 2012 Torus Knot Software Ltd

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Wed Oct 23 2013 06:57:26