- if (!thread_create(handle, start_routine, this))
- {
- std::cerr << "Failed to create thread number " << idx << std::endl;
- ::exit(EXIT_FAILURE);
- }
+
+// ThreadBase::notify_one() wakes up the thread when there is some work to do
+
+void ThreadBase::notify_one() {
+
+ mutex.lock();
+ sleepCondition.notify_one();
+ mutex.unlock();
+}
+
+
+// ThreadBase::wait_for() set the thread to sleep until condition 'b' turns true
+
+void ThreadBase::wait_for(volatile const bool& b) {
+
+ mutex.lock();
+ while (!b) sleepCondition.wait(mutex);
+ mutex.unlock();