aboutsummaryrefslogtreecommitdiffstats
path: root/storageframework
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-10-13 20:23:50 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-10-13 20:23:50 +0000
commit5f9f6aa7f2f9dc2a91692d6db876b21caa60ee12 (patch)
tree7714cfea184f857d9d4d04fda214d8de7b418869 /storageframework
parent33291d95a41eeb9919392805da8b2986188c7014 (diff)
Properly lock criticalk section.
Diffstat (limited to 'storageframework')
-rw-r--r--storageframework/src/vespa/storageframework/generic/thread/tickingthread.cpp5
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 {