#include "dispatcher.h" Dispatcher::Dispatcher() { connection=dispatcher.connect([this] { std::unique_lock lock(functions_mutex); for(auto &function: functions) { function(); } functions.clear(); }); } Dispatcher::~Dispatcher() { disconnect(); std::unique_lock lock(functions_mutex); functions.clear(); } void Dispatcher::post(std::function &&function) { std::unique_lock lock(functions_mutex); functions.emplace_back(function); lock.unlock(); dispatcher(); } void Dispatcher::disconnect() { connection.disconnect(); }