Ускорение asio run vs work (двусмысленность) - какова цель рабочего класса? - PullRequest
1 голос
/ 18 марта 2019

Как вы можете видеть здесь в этом примере udp server , метод run будет поддерживать работу приложения навсегда.(проверено)

Таким образом, нет необходимости использовать рабочий класс, как указано в документации

Из расширенной документации: рабочий класс используется для информирования io_service о начале и завершении работы.Это гарантирует, что функция run () объекта io_service не завершится во время выполнения работы и что она завершится, если не осталось незавершенной работы.

1 Ответ

3 голосов
/ 18 марта 2019

Класс work устарел и заменен на executor_work_guard.Его назначение было объяснено в документации :

Некоторым приложениям может потребоваться предотвратить возврат вызова run() объекта io_context, когда больше нет работы.Например, io_context может быть запущен в фоновом потоке, который запускается до асинхронных операций приложения.Вызов run() можно продолжить, создав объект типа boost::asio::executor_work_guard<io_context::executor_type> [...]

...