Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Управление очередью в boost::asio::io_service |
Автор: Deeoni$ 18.11.2012, 13:15 | ||
Здравствуйте. Есть библиотека объекты классов которой общаются между собой через boost::signal2 сигналы. Библиотека многопоточная, т.е. разные ее модули работают в разных потоках, но все сигналы от них должны обрабатываться в одном специальном потоке. Для этого я использовал boost::asio::io_service, который принимает сигналы от модулей и обрабатывает их в этом специальном потоке. Код выглядит примерно так.
Но в какой-то момент появилась необходимость присвоить сигналам некую степень важности. Если конкретнее, то сигналы могут приходить в очередь как от самой библиотеки, так и от клиентского кода, через интерфейсный класс. Так вот клиентские сигналы имеют более высокую степень важности, чем сигналы библиотеки. На практике это значит, что клиентский сигнал попадая в очередь должен: 1) Удалять из очереди все не обработанные сигналы от библиотеки 2) Блокировать очередь для поступления новых Так вот вопрос есть ли какой-нибудь способ управлять очередью io_service, а точнее удалять из нее не нужные мне объекты? Или надо писать свой класс для этого? |