#c #boost #boost-asio
#c #повышение #повышение asio
Вопрос:
Как вы можете видеть здесь, в этом примере UDP-сервера, метод run будет поддерживать работу приложения вечно. (протестировано)
Таким образом, нет необходимости использовать рабочий класс, как указано в документации
Из документации boost: Рабочий класс используется для информирования io_service
о начале и завершении работы. Это гарантирует, что функция io_service
объекта run()
не завершится во время выполнения работы, и что она завершится, когда не останется незавершенной работы.
Комментарии:
1. В этом примере нет необходимости. Это не значит, что он никогда не был нужен.
Ответ №1:
work
Класс устарел и был заменен на executor_work_guard
. Его назначение было объяснено в документации:
Некоторым приложениям может потребоваться предотвратить возврат
run()
вызова объекта io_context, когда больше нечего делать. Например, io_context может выполняться в фоновом потоке, который запускается перед асинхронными операциями приложения.run()
Вызов может быть продолжен путем создания объекта типаboost::asio::executor_work_guard<io_context::executor_type>
[…]