看板 Programming 關於我們 聯絡資訊
以下面這個程式為例: #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