#include "dispatcher.h" #include Dispatcher::Dispatcher() { connection=dispatcher.connect([this] { std::vector>::iterator> its; { std::unique_lock lock(functions_mutex); its.reserve(functions.size()); for(auto it=functions.begin();it!=functions.end();++it) its.emplace_back(it); } for(auto &it: its) (*it)(); { std::unique_lock lock(functions_mutex); for(auto &it: its) functions.erase(it); } }); } Dispatcher::~Dispatcher() { disconnect(); } void Dispatcher::disconnect() { connection.disconnect(); }