15 #include "selectThreadImpl.h" 17 #ifdef THREAD_SIMPLE_IMPL 19 #include "conditionVarSimpleImpl.h" 20 #include "threadSimpleImpl.h" 27 void ConditionVarSimpleImpl::
29 _mutex.release_quietly();
31 ThreadSimpleManager *manager = ThreadSimpleManager::get_global_ptr();
32 ThreadSimpleImpl *thread = manager->get_current_thread();
33 manager->enqueue_block(thread,
this);
34 manager->next_context();
44 void ConditionVarSimpleImpl::
45 wait(
double timeout) {
46 _mutex.release_quietly();
52 ThreadSimpleManager *manager = ThreadSimpleManager::get_global_ptr();
53 ThreadSimpleImpl *thread = manager->get_current_thread();
54 manager->enqueue_ready(thread,
true);
55 manager->next_context();
65 void ConditionVarSimpleImpl::
67 ThreadSimpleManager *manager = ThreadSimpleManager::get_global_ptr();
68 if (manager->unblock_one(
this)) {
71 ThreadSimpleImpl *thread = manager->get_current_thread();
72 manager->enqueue_ready(thread,
false);
73 manager->next_context();
82 void ConditionVarSimpleImpl::
84 ThreadSimpleManager *manager = ThreadSimpleManager::get_global_ptr();
85 if (manager->unblock_all(
this)) {
88 ThreadSimpleImpl *thread = manager->get_current_thread();
89 manager->enqueue_ready(thread,
false);
90 manager->next_context();
94 #endif // THREAD_SIMPLE_IMPL