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