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