Я просто переходил на asio chat server example. Мой вопрос заключается в их использовании функции io_service.run()
. Документация для функции io_service.run()
говорит:boost asio io_service.run()
Функциональных блоки запуска(), пока все работы не закончены, и нет больше обработчиков быть посланных, или до тех пор, пока io_service был остановлена. Несколько потоков могут вызвать функцию run() для настройки пула потоков , из которого io_service может выполнять обработчики. Все потоки, ожидающие в пуле, эквивалентны, а io_service может выбрать любой из них для вызова обработчика. Функция run() может быть безопасно вызвана снова после ее завершения только после вызова reset().
В нем говорится, что функция запуска вернется, и я предполагаю, что когда она вернется, сетевой поток остановится, пока он не будет вызван снова. Если это так, то почему функция запуска не вызывается в цикле или, по крайней мере, не имеет собственного потока? Функция io_service.run()
в значительной степени является для меня загадкой.
Проверьте также ответ здесь: http://stackoverflow.com/questions/4705411/boostasio-io-service-run-vs-poll-or-how-do-i-integrate-boostasio-in -ma – serxio