void VolumeWorker::MessageReceived(BMessage *message) { switch (message->what) { case kTriggerWork: _Work(); break; default: BLooper::MessageReceived(message); } }
void Worker::_Worker() { while (true) { MutexLocker locker(fLock); if (fTasks.IsEmpty()) { ConditionVariableEntry entry; fCondition.Add(&entry); locker.Unlock(); status_t status = entry.Wait(); if (status != B_OK) break; } else locker.Unlock(); _Work(); } }
void Worker::WaitFor(Task& task) { _Work(); task.Wait(); }