From 92def969a7308f9f4bba377ed6590ce5ff28dc65 Mon Sep 17 00:00:00 2001 From: Wiebe Cazemier Date: Sun, 28 Nov 2021 13:28:56 +0100 Subject: [PATCH] Perform main thread tasks outside of eventMutex --- mainapp.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/mainapp.cpp b/mainapp.cpp index 42ba645..68de536 100644 --- a/mainapp.cpp +++ b/mainapp.cpp @@ -538,12 +538,21 @@ void MainApp::start() uint64_t eventfd_value = 0; check(read(cur_fd, &eventfd_value, sizeof(uint64_t))); - std::lock_guard locker(eventMutex); - for(auto &f : taskQueue) + std::forward_list> tasks; + + { + std::lock_guard locker(eventMutex); + for (auto &f : taskQueue) + { + tasks.push_front(f); + } + taskQueue.clear(); + } + + for(auto &f : tasks) { f(); } - taskQueue.clear(); } } catch (std::exception &ex) -- libgit2 0.21.4