Go to the documentation of this file.
26 #ifndef __OgreThreadDefinesTBB_H__
27 #define __OgreThreadDefinesTBB_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 tbb::recursive_mutex OGRE_AUTO_MUTEX_NAME
32 #define OGRE_LOCK_AUTO_MUTEX tbb::recursive_mutex::scoped_lock ogreAutoMutexLock(OGRE_AUTO_MUTEX_NAME)
33 #define OGRE_MUTEX(name) mutable tbb::recursive_mutex name
34 #define OGRE_STATIC_MUTEX(name) static tbb::recursive_mutex name
35 #define OGRE_STATIC_MUTEX_INSTANCE(name) tbb::recursive_mutex name
36 #define OGRE_LOCK_MUTEX(name) tbb::recursive_mutex::scoped_lock OGRE_TOKEN_PASTE_EXTRA(ogrenameLock, __LINE__) (name)
37 #define OGRE_LOCK_MUTEX_NAMED(mutexName, lockName) tbb::recursive_mutex::scoped_lock lockName(mutexName)
39 #define OGRE_AUTO_SHARED_MUTEX mutable tbb::recursive_mutex *OGRE_AUTO_MUTEX_NAME
40 #define OGRE_LOCK_AUTO_SHARED_MUTEX assert(OGRE_AUTO_MUTEX_NAME); tbb::recursive_mutex::scoped_lock ogreAutoMutexLock(*OGRE_AUTO_MUTEX_NAME)
41 #define OGRE_NEW_AUTO_SHARED_MUTEX assert(!OGRE_AUTO_MUTEX_NAME); OGRE_AUTO_MUTEX_NAME = new tbb::recursive_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)
47 #define OGRE_RW_MUTEX(name) mutable tbb::queuing_rw_mutex name
48 #define OGRE_LOCK_RW_MUTEX_READ(name) tbb::queuing_rw_mutex::scoped_lock ogrenameLock(name, false)
49 #define OGRE_LOCK_RW_MUTEX_WRITE(name) tbb::queuing_rw_mutex::scoped_lock ogrenameLock(name, true)
51 #define OGRE_THREAD_POINTER(T, var) tbb::enumerable_thread_specific<SharedPtr<T> > var
52 #define OGRE_THREAD_POINTER_INIT(var) var()
53 #define OGRE_THREAD_POINTER_VAR(T, var) tbb::enumerable_thread_specific<SharedPtr<T> > var
54 #define OGRE_THREAD_POINTER_GET(var) var.local().get()
55 #define OGRE_THREAD_POINTER_SET(var, expr) do { var.local().setNull(); var.local().bind(expr); } while (0)
56 #define OGRE_THREAD_POINTER_DELETE(var) var.local().setNull()
58 #define OGRE_THREAD_HARDWARE_CONCURRENCY tbb::task_scheduler_init::default_num_threads()
59 #define OGRE_THREAD_CURRENT_ID tbb::this_tbb_thread::get_id()
60 #define OGRE_THREAD_SLEEP(ms) tbb::this_tbb_thread::sleep(tbb::tick_count::interval_t(double(ms)/1000))
61 #define OGRE_THREAD_WORKER_INHERIT
62 #define OGRE_THREAD_ID_TYPE tbb::tbb_thread::id
63 #define OGRE_THREAD_YIELD tbb::this_tbb_thread::yield()
Copyright © 2012 Torus Knot Software Ltd

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Tue Mar 18 2014 19:15:27