From 07adc22972f295380826def618597a9d229e855a Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Fri, 27 Oct 2017 03:14:44 +0200 Subject: Use std::mutex and std::condition_variable instead of FastOS_Cond. --- staging_vespalib/src/vespa/vespalib/util/clock.cpp | 12 ++++++------ staging_vespalib/src/vespa/vespalib/util/clock.h | 6 ++++-- 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'staging_vespalib') diff --git a/staging_vespalib/src/vespa/vespalib/util/clock.cpp b/staging_vespalib/src/vespa/vespalib/util/clock.cpp index 403e1408747..b19b067afa9 100644 --- a/staging_vespalib/src/vespa/vespalib/util/clock.cpp +++ b/staging_vespalib/src/vespa/vespalib/util/clock.cpp @@ -2,6 +2,7 @@ #include "clock.h" #include +#include using namespace fastos; @@ -11,6 +12,7 @@ namespace vespalib { Clock::Clock(double timePeriod) : _timeNS(0u), _timePeriodMS(static_cast(timePeriod*1000)), + _lock(), _cond(), _stop(false), _running(false) @@ -32,22 +34,20 @@ void Clock::Run(FastOS_ThreadInterface *thread, void *arguments) { (void) arguments; _running = true; - _cond.Lock(); + std::unique_lock guard(_lock); while ( ! thread->GetBreakFlag() && !_stop) { setTime(); - _cond.TimedWait(_timePeriodMS); + _cond.wait_for(guard, std::chrono::milliseconds(_timePeriodMS)); } - _cond.Unlock(); _running = false; } void Clock::stop(void) { - _cond.Lock(); + std::unique_lock guard(_lock); _stop = true; - _cond.Broadcast(); - _cond.Unlock(); + _cond.notify_all(); } } diff --git a/staging_vespalib/src/vespa/vespalib/util/clock.h b/staging_vespalib/src/vespa/vespalib/util/clock.h index 253eba25556..75f407ec95d 100644 --- a/staging_vespalib/src/vespa/vespalib/util/clock.h +++ b/staging_vespalib/src/vespa/vespalib/util/clock.h @@ -2,8 +2,9 @@ #pragma once #include -#include #include +#include +#include namespace vespalib { @@ -21,7 +22,8 @@ private: mutable fastos::TimeStamp _timeNS; int _timePeriodMS; - FastOS_Cond _cond; + std::mutex _lock; + std::condition_variable _cond; bool _stop; bool _running; -- cgit v1.2.3