Если вы обрабатываете входящий трафик, используя один объект Event (подразумевая, что у вас нет входящей очереди), вы пропустите события.Это действительно то, что вы хотите?
Если вы хотите отследить все события, лучше подойдет полноценная очередь производитель-потребитель.Ссылочная реализация для Boost.Thread здесь .
Одна проблема, которая снова и снова возникает с многопоточным кодом, состоит в том, как передавать данные из одного потока в другой.Например, один из распространенных способов распараллеливания последовательного алгоритма состоит в том, чтобы разделить его на независимые порции и создать конвейер - каждый этап в конвейере может выполняться в отдельном потоке, и каждый этап добавляет данные во входную очередь для следующего этапакогда это будет сделано.Для правильной работы входная очередь должна быть записана так, чтобы данные могли безопасно добавляться одним потоком и удаляться другим потоком без повреждения структуры данных.