diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-10-13 20:23:50 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-10-13 20:23:50 +0000 |
commit | 5f9f6aa7f2f9dc2a91692d6db876b21caa60ee12 (patch) | |
tree | 7714cfea184f857d9d4d04fda214d8de7b418869 /storageframework/src | |
parent | 33291d95a41eeb9919392805da8b2986188c7014 (diff) |
Properly lock criticalk section.
Diffstat (limited to 'storageframework/src')
-rw-r--r-- | storageframework/src/vespa/storageframework/generic/thread/tickingthread.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/storageframework/src/vespa/storageframework/generic/thread/tickingthread.cpp b/storageframework/src/vespa/storageframework/generic/thread/tickingthread.cpp index 51afa75ea98..258306b6416 100644 --- a/storageframework/src/vespa/storageframework/generic/thread/tickingthread.cpp +++ b/storageframework/src/vespa/storageframework/generic/thread/tickingthread.cpp @@ -124,9 +124,10 @@ class TickingThreadPoolImpl final : public TickingThreadPool { void broadcast() override {} }; struct CriticalGuard final : public TickingLockGuard::Impl { + std::unique_lock<std::mutex> _guard; std::condition_variable &_cond; - explicit CriticalGuard(std::condition_variable & cond) : _cond(cond) {} + explicit CriticalGuard(std::mutex & lock, std::condition_variable & cond) : _guard(lock), _cond(cond) {} void broadcast() override { _cond.notify_all(); } }; @@ -179,7 +180,7 @@ public: } TickingLockGuard freezeCriticalTicks() override { - return TickingLockGuard(std::make_unique<CriticalGuard>(_cond)); + return TickingLockGuard(std::make_unique<CriticalGuard>(_lock, _cond)); } void stop() override { |