From acdbdcb3537863c350fa561cbea743cc8b499df2 Mon Sep 17 00:00:00 2001 From: Valery Mironov <32071355+MBkkt@users.noreply.github.com> Date: Fri, 24 Nov 2023 17:39:03 +0100 Subject: [PATCH] Fix async_utils --- core/utils/async_utils.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/utils/async_utils.cpp b/core/utils/async_utils.cpp index 9c1bed9b7..cd590fc2d 100644 --- a/core/utils/async_utils.cpp +++ b/core/utils/async_utils.cpp @@ -61,6 +61,7 @@ ThreadPool::ThreadPool(size_t threads, basic_string_view name) { template void ThreadPool::start(size_t threads, basic_string_view name) { + std::lock_guard lock{m_}; IRS_ASSERT(threads_.empty()); threads_.reserve(threads); for (size_t i = 0; i != threads; ++i) { @@ -123,7 +124,8 @@ void ThreadPool::Work() { if constexpr (UseDelay) { auto& top = tasks_.top(); if (top.at > Clock::now()) { - cv_.wait_until(lock, top.at); + auto const at = top.at; + cv_.wait_until(lock, at); continue; } fn = std::move(const_cast(top.fn));