21 INLINE
Thread *ThreadSimpleImpl::
22 get_current_thread() {
33 INLINE
bool ThreadSimpleImpl::
34 is_same_system_thread()
const {
35 #ifdef HAVE_POSIX_THREADS
36 return pthread_equal(_posix_system_thread_id, pthread_self());
39 return (_win32_system_thread_id == GetCurrentThreadId());
51 INLINE
void ThreadSimpleImpl::
60 INLINE
bool ThreadSimpleImpl::
61 is_threading_supported() {
70 INLINE
bool ThreadSimpleImpl::
72 return (is_os_threads != 0);
80 INLINE
bool ThreadSimpleImpl::
90 INLINE
void ThreadSimpleImpl::
91 sleep(
double seconds) {
92 ThreadSimpleManager *manager = ThreadSimpleManager::get_global_ptr();
93 if (manager->is_same_system_thread()) {
94 ThreadSimpleImpl *thread = manager->get_current_thread();
95 thread->sleep_this(seconds);
97 manager->system_sleep(seconds);
106 INLINE
void ThreadSimpleImpl::
108 ThreadSimpleManager *manager = ThreadSimpleManager::get_global_ptr();
109 if (manager->is_same_system_thread()) {
110 ThreadSimpleImpl *thread = manager->get_current_thread();
111 thread->yield_this(
true);
113 manager->system_yield();
122 INLINE
void ThreadSimpleImpl::
124 ThreadSimpleManager *manager = ThreadSimpleManager::get_global_ptr();
125 if (manager->is_same_system_thread()) {
126 ThreadSimpleImpl *thread = manager->get_current_thread();
127 thread->consider_yield_this();
136 INLINE
void ThreadSimpleImpl::
137 consider_yield_this() {
138 double now = _manager->get_current_time();
139 if (now >= _stop_time) {
149 INLINE
double ThreadSimpleImpl::
150 get_wake_time()
const {
159 void ThreadSimpleImpl::
160 write_status(ostream &out) {
161 ThreadSimpleManager *manager = ThreadSimpleManager::get_global_ptr();
162 manager->write_status(out);
static Thread * get_current_thread()
Returns a pointer to the currently-executing Thread object.
A thread; that is, a lightweight process.