Вот проблема:Как сделать присоединение к boost :: asio :: io_service?
В главном потоке (ИО - повышение :: ASIO :: io_service):
io.post(functor1, callback1)
....
io.post(functorN, callbackN)
io.join() <--- waiting while all the task to be processed and continue to execute the program
код выполняется в цикле. boost::thread_group
будет идеально соответствовать, но он создает новые потоки все время, в то время как я хочу создавать рабочие потоки только один раз и отправлять им задачи, как это делает asio. Все потоки пула, которые я видел, являются просто обтекателями вектора потоков + io_service, его нельзя использовать так, как я показал выше.
Итак, как я могу «присоединиться» к boost :: asio?
Как вы работаете работу в очереди IO службы? Использование run() или poll()? Используете ли вы какие-либо объекты io_service :: work? –
Я использую '' work''. Я создаю несколько потоков '' thread_group'' и вызываю '' run() '' внутри каждого рабочего потока. – fogbit