Вступить в клуб →
лёгкаявопросСети в Linux: сокеты, epoll и Boost.Asio

Задачи, отправленные в io_context, никогда не выполняются

boost::asio::io_context io;
std::thread worker([&] { io.run(); });

// позже, по событиям из основного потока:
boost::asio::post(io, [] { flushMetrics(); });

flushMetrics не вызывается ни разу, отладчик показывает, что поток worker давно завершился. Почему?

  • run() без работы сразу возвращается; нужен work_guard
  • post нельзя вызывать из другого потока
  • io_context надо запускать через run_one в цикле
  • Лямбда в post должна принимать error_code

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела