Я просто перешел к asio пример чата. Мой вопрос заключается в их использовании функции io_service.run()
. Документация для функции io_service.run()
говорит:
Функция run() блокирует, пока все работы не закончатся, и нет больше обработчиков, которые будут отправлены, или пока io_service не будет остановился. Несколько потоков могут вызвать функцию run() для настройки пул потоков, из которого io_service может выполнять обработчики. Все потоки, ожидающие в пуле, эквивалентны, а io_service может выбрать любой из них для вызова обработчика. Функция run() может быть безопасно вызван снова, как только он завершится только после вызова reset().
В нем говорится, что функция run вернется, и я предполагаю, что когда он вернет сетевой поток, остановится, пока он не будет вызван снова. Если это так, то почему функция запуска не вызывается в цикле или, по крайней мере, не имеет собственного потока? функция io_service.run()
для меня довольно загадка.