Вы должны использовать условные переменные Boost . Переменные условия позволяют избежать некоторых ловушек, которые могут возникнуть с объектами событий. Мне трудно правильно использовать объекты событий в некоторых угловых случаях: несколько триггеров до обработки события, некоторое состояние изменяется до вызова обработчика и т. Д.
Примеры в документации Boost говорят сами за себя.