Commit 92def969a7308f9f4bba377ed6590ce5ff28dc65

Authored by Wiebe Cazemier
1 parent 3746e3d8

Perform main thread tasks outside of eventMutex

Showing 1 changed file with 12 additions and 3 deletions
mainapp.cpp
@@ -538,12 +538,21 @@ void MainApp::start() @@ -538,12 +538,21 @@ void MainApp::start()
538 uint64_t eventfd_value = 0; 538 uint64_t eventfd_value = 0;
539 check<std::runtime_error>(read(cur_fd, &eventfd_value, sizeof(uint64_t))); 539 check<std::runtime_error>(read(cur_fd, &eventfd_value, sizeof(uint64_t)));
540 540
541 - std::lock_guard<std::mutex> locker(eventMutex);  
542 - for(auto &f : taskQueue) 541 + std::forward_list<std::function<void()>> tasks;
  542 +
  543 + {
  544 + std::lock_guard<std::mutex> locker(eventMutex);
  545 + for (auto &f : taskQueue)
  546 + {
  547 + tasks.push_front(f);
  548 + }
  549 + taskQueue.clear();
  550 + }
  551 +
  552 + for(auto &f : tasks)
543 { 553 {
544 f(); 554 f();
545 } 555 }
546 - taskQueue.clear();  
547 } 556 }
548 } 557 }
549 catch (std::exception &ex) 558 catch (std::exception &ex)