summaryrefslogtreecommitdiffstats
path: root/fnet
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@yahooinc.com>2022-02-17 14:15:58 +0000
committerTor Brede Vekterli <vekterli@yahooinc.com>2022-02-17 14:15:58 +0000
commit8f1617fcfd65b1a8c516769a9f12a74494a93483 (patch)
treea5f383b4508ab6d812276a70a658c87d0b53c422 /fnet
parenta62caaa746d9ab5680d134ed815dac0346e54c25 (diff)
Check FNET_Scheduler slots inside lock
Diffstat (limited to 'fnet')
-rw-r--r--fnet/src/vespa/fnet/scheduler.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/fnet/src/vespa/fnet/scheduler.cpp b/fnet/src/vespa/fnet/scheduler.cpp
index 34ec73bda69..29ce40ea66d 100644
--- a/fnet/src/vespa/fnet/scheduler.cpp
+++ b/fnet/src/vespa/fnet/scheduler.cpp
@@ -137,15 +137,14 @@ FNET_Scheduler::Print(FILE *dst)
void
FNET_Scheduler::CheckTasks()
{
- _now = _sampler ? *_sampler : vespalib::steady_clock::now();
-
+ const auto now = _sampler ? *_sampler : vespalib::steady_clock::now();
+ std::unique_lock guard(_lock);
+ _now = now;
// assume timely value propagation
if (_slots[NUM_SLOTS] == nullptr && _now < _next)
return;
- std::unique_lock<std::mutex> guard(_lock);
-
// perform urgent tasks
PerformTasks(guard, NUM_SLOTS, 0);