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