作者previewslave (虾虾虾虾 来玩围棋吧)
站内Programming
标题[问题] 请教一个 CallBack 观念的问题
时间Tue Jun 17 23:24:47 2008
以下面这个程式为例:
#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
void print(const boost::system::error_code &) { std::cout << "Hello, world!\n"; }
int main()
{
boost::asio::io_service io;
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
t.async_wait(print);
io.run();
}
条件说明:
1. io_service 是必要的。
2. 开始计时的时间点是
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
就开始计时了,并非从 t.async_wait(print) 才开始计时。
小弟的想法是:
为什麽需要 io.run() 这个函数多此一举呢?
既然 deadline_timer t(io, seconds(5)) 就已经开始计时,
那麽执行等待 5 秒就直接由 t.async_wait 去处理就好,主程式就一直继续下去,
系统内部就直接以多工的方式等待 deadline 的到来,然後再去 print 就好,
何必又要搞一个 io.run() 呢?这其中的原理是什麽?
就以上的想法,向板上高手求教,谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.100.86.180
※ previewslave:转录至看板 C_and_CPP 06/18 07:16