| 74 | } |
| 75 | |
| 76 | template<typename F> void Iterate(F&& f) |
| 77 | { |
| 78 | WAIT_LOCK(m_mutex, lock); |
| 79 | for (auto it = m_list.begin(); it != m_list.end();) { |
| 80 | ++it->count; |
| 81 | { |
| 82 | REVERSE_LOCK(lock); |
| 83 | f(*it->callbacks); |
| 84 | } |
| 85 | it = --it->count ? std::next(it) : m_list.erase(it); |
| 86 | } |
| 87 | } |
| 88 | }; |
| 89 | |
| 90 | static CMainSignals g_signals; |
no test coverage detected