diff --git a/nano/lib/utility.hpp b/nano/lib/utility.hpp index b547e5324..34167a2cb 100644 --- a/nano/lib/utility.hpp +++ b/nano/lib/utility.hpp @@ -158,8 +158,11 @@ public: } void notify (T... args) { - nano::lock_guard lock (mutex); - for (auto & i : observers) + nano::unique_lock lock (mutex); + auto observers_copy = observers; + lock.unlock (); + + for (auto & i : observers_copy) { i (args...); }