diff --git a/include/EventManager/Manager.hpp b/include/EventManager/Manager.hpp index 3fb80a3..7a7f820 100644 --- a/include/EventManager/Manager.hpp +++ b/include/EventManager/Manager.hpp @@ -50,6 +50,9 @@ /// map holding all the event type and plugin combinations std::map>> eventMap_; + + /// mutex to protect the eventMap + std::mutex mutexEventMap_; /// queue for incomng events std::queue> eventQueue_; diff --git a/src/EventManager/Manager.cpp b/src/EventManager/Manager.cpp index 8255e82..09f8557 100644 --- a/src/EventManager/Manager.cpp +++ b/src/EventManager/Manager.cpp @@ -12,6 +12,7 @@ #include #include #include +#include void EventManager::Manager::startMain_() { @@ -207,6 +208,7 @@ void EventManager::Manager::subscribe(std::uint32_t type, std::shared_ptr participant) { + std::lock_guard lockGuard(mutexEventMap_); // check if participant is already registered auto it = eventMap_.find(type); @@ -231,7 +233,8 @@ void EventManager::Manager::unsubscribe(std::uint32_t type, std::shared_ptr participant) { - + std::lock_guard lockGuard(mutexEventMap_); + auto it = eventMap_.find(type); if (it == eventMap_.end())