Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #pragma once
00024
00025 #include "cinder/Cinder.h"
00026 #if defined( CINDER_COCOA )
00027 #include "cinder/cocoa/CinderCocoa.h"
00028 #endif
00029 #if defined( CINDER_MAC )
00030 #include <objc/objc-auto.h>
00031 #endif
00032
00033 #if (defined( _MSC_VER ) && ( _MSC_VER >= 1700 )) || defined( _LIBCPP_VERSION )
00034 #include <thread>
00035 #include <mutex>
00036 #include <condition_variable>
00037 #include <future>
00038 #else
00039 #include <boost/thread/mutex.hpp>
00040 #include <boost/thread/recursive_mutex.hpp>
00041 #include <boost/thread/thread.hpp>
00042 #include <boost/thread/condition_variable.hpp>
00043 #define BOOST_THREAD_PROVIDES_FUTURE
00044 #include <boost/thread/future.hpp>
00045
00046
00047 namespace std {
00048 using boost::mutex;
00049 using boost::recursive_mutex;
00050 using boost::thread;
00051 using boost::lock_guard;
00052 using boost::unique_lock;
00053 using boost::condition_variable;
00054 namespace this_thread {
00055 using boost::this_thread::yield;
00056 using boost::this_thread::get_id;
00057 }
00058 using boost::future;
00059 using boost::packaged_task;
00060 using boost::promise;
00061 }
00062 #endif
00063
00064 namespace cinder {
00066 class ThreadSetup {
00067 public:
00068 ThreadSetup() {
00069 #if defined( CINDER_MAC )
00070 objc_registerThreadWithCollector();
00071 #endif
00072 }
00073
00074 ~ThreadSetup() {
00075 }
00076
00077 protected:
00078 #if defined( CINDER_COCOA )
00079 cocoa::SafeNsAutoreleasePool mAutoreleasePool;
00080 #endif
00081 };
00082
00083 }