asio定時(shí)器expires_after函數(shù)會(huì)先調(diào)用cancel函數(shù)
asio::io_context io_context; testWait tc; steady_timer timerTest(io_context); { timerTest.expires_after(std::chrono::seconds(600)); timerTest.async_wait(std::bind(&testWait::waitHandle, &tc,std::placeholders::_1)); timerTest.async_wait(std::bind(&testWait::waitHandle2, &tc)); timerTest.expires_after(std::chrono::seconds(30)); //這個(gè)調(diào)用會(huì)導(dǎo)致timerTest中原先已經(jīng)在異步等待的回調(diào)被立即調(diào)用(下一個(gè)事件循環(huán))并且回調(diào)函數(shù)errorcode不為0,其實(shí)就是會(huì)先調(diào)用cancel函數(shù) timerTest.async_wait([](const std::error_code& ec) { if (!ec) { std::cout << "lambda wait" << std::endl; //30秒后調(diào)用 } else { std::cout << "lambda err code:" << ec.value() << " what" << ec.message() << std::endl; } } ); }

源碼注釋
純屬記錄程序人生,如有差錯(cuò),歡迎指正,輕噴

浙公網(wǎng)安備 33010602011771號