asio::executor_work_guard原理&使用


從executor_work_guard.hpp可知,executor_work_guard的構造和析構分別調用了 executor_.on_work_started(); 和 executor_.on_work_finished();

 

executor_是executor_work_guard綁定的io_context對象

 

而on_work_started 才是真正保證即使 io_context中沒有任務的時候,run也不退出的關鍵

 

所以我們可以通過操控executor_work_guard生命周期的方法,來控制run什么時候退出

 

1 for (std::size_t i = 0; i < pool_size; ++i)
2{
3     io_context_ptr io_context(new boost::asio::io_context);
4     io_contexts_.push_back(io_context);
5     work_.push_back(boost::asio::make_work_guard(*io_context));
6}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM