bool OplogBufferCollection::waitForData(Seconds waitDuration) { stdx::unique_lock<stdx::mutex> lk(_mutex); if (!_cvNoLongerEmpty.wait_for( lk, waitDuration.toSystemDuration(), [&]() { return _count != 0; })) { return false; } return _count != 0; }
bool OplogBufferCollection::blockingPeek(OperationContext* txn, Value* value, Seconds waitDuration) { stdx::unique_lock<stdx::mutex> lk(_mutex); if (!_cvNoLongerEmpty.wait_for( lk, waitDuration.toSystemDuration(), [&]() { return _count != 0; })) { return false; } return _peekOneSide_inlock(txn, value, true); }
void PeriodicTaskRunner::run() { // Use a shorter cycle time in debug mode to help catch race conditions. const Seconds waitTime(kDebugBuild ? 5 : 60); stdx::unique_lock<stdx::mutex> lock(_mutex); while (!_shutdownRequested) { { MONGO_IDLE_THREAD_BLOCK; if (stdx::cv_status::timeout != _cond.wait_for(lock, waitTime.toSystemDuration())) continue; } _runTasks(); } }
void Balancer::_sleepFor(OperationContext* txn, Seconds waitTimeout) { stdx::unique_lock<stdx::mutex> lock(_mutex); _condVar.wait_for(lock, waitTimeout.toSystemDuration(), [&] { return _state != kRunning; }); }