我有一個問題,同時使用deadline_timer和io_service對象::交如下:使用io_service對象::交(增壓)時deadline_timer等待
#include "boost/asio.hpp"
#include "boost/thread.hpp"
int main()
{
boost::asio::io_service io_service;
boost::asio::deadline_timer timer1(io_service);
boost::asio::deadline_timer timer2(io_service);
timer1.expires_from_now(boost::posix_time::seconds(1));
timer1.async_wait([](const boost::system::error_code& error) {
boost::this_thread::sleep(boost::posix_time::seconds(5));
printf("1 ");
});
timer2.expires_from_now(boost::posix_time::seconds(2));
timer2.async_wait([](const boost::system::error_code& error) {
printf("2 ");
});
boost::thread t([&io_service]() {
boost::this_thread::sleep(boost::posix_time::seconds(5));
io_service.post([]() {
printf("3 ");
});
io_service.post([]() {
printf("4 ");
});
});
io_service.run();
t.join();
getchar();
return 0;
}
我認爲吼聲的結果是「1 2 3 4」,但結果是「1 3 4 2」。任何人都可以告訴我如何使用boost庫(以及不更改timer1和timer2的過期時間)之前執行timer2(print「2」)的回調,結果爲「1 2 3 4」。
非常感謝!
** **⚠沒有返工調用鏈或修改的計時器,它在很大程度上依賴於實施細節極其脆弱的解決方案可在[這裏](http://coliru.stacked-crooked.com/a/0524433bb0bdcf71)**⚠** –