void process(int thread_index) { (void)(thread_index); //currently unused, but maybe useful on debugging. for( ; ; ) { if(is_terminated()) { break; } task_ptr_t task = task_queue_.dequeue(); bool should_notify = false; task->run(); { task_count_lock_t lock(task_count_mutex_); --task_count_; if(is_waiting() && task_count_ == 0) { should_notify = true; } } if(should_notify) { c_task_.notify_all(); } } }
void process(int thread_index) { for( ; ; ) { if(is_terminated()) { break; } task_ptr_t task = task_queue_.dequeue(); bool should_notify = false; task->run(); { task_count_lock_t lock(task_count_mutex_); --task_count_; if(is_waiting() && task_count_ == 0) { should_notify = true; } } if(should_notify) { c_task_.notify_all(); } } }