From 32bfe1dbac67b351391460ca530f541050344aca Mon Sep 17 00:00:00 2001 From: niansa Date: Fri, 5 May 2023 21:00:00 +0200 Subject: [PATCH] Resource deadlock avoided --- scheduled_thread.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scheduled_thread.cpp b/scheduled_thread.cpp index 31b76f3..bf8c61f 100644 --- a/scheduled_thread.cpp +++ b/scheduled_thread.cpp @@ -13,9 +13,9 @@ void ScheduledThread::main_loop() { std::unique_lock L(queue_mutex); while (!queue.empty()) { // Get queue entry - L.lock(); auto e = std::move(queue.front()); queue.pop(); + // Unlock queue L.unlock(); // Create task for it sched.create_task(e.task_name); @@ -23,6 +23,8 @@ void ScheduledThread::main_loop() { auto& start_fcn = std::any_cast(Task::get_current().properties.emplace("start_function", std::move(e.start_fcn)).first->second); // Call start function start_fcn(); + // Lock queue + L.lock(); } } // Run once