Нужно получить данные, потом выполнить асинхронную (не блокировать поток для других соединений) задержку и отправить их. Пытаюсь делать через deadline_timer:
boost::asio::deadline_timer timer(soket_.get_executor());
timer.expires_from_now(boost::posix_time::seconds(10));
timer.async_wait([](const boost::system::error_code& error) {
int a = 10;
});
Но 10 секунд не выжидаются, а сразу возвращается управление обработчику.
Или для этого надо что-то другое юзать?
захвати в лямбду таймер
boost::asio::deadline_timer timer(soket_.get_executor()); timer.expires_from_now(boost::posix_time::seconds(10)); timer.async_wait([&timer](const boost::system::error_code& error) { int a = 10; });
нет, ты владение не захватываешь)
Что это за зверь? "асинхронная задержка в потоке" , а извини, кто её тогда вызовет?
Ну нужно кинуть запрос, подождать его выполнения и потом получить ответ. Так вот чтобы не блокировать поток для других соединений и нужна эта "асинхронная задержка".
Обсуждают сегодня