You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

boost::asio::io_context停止执行新任务的问题排查求助

boost::asio::io_context停止执行新任务的问题排查求助

各位大佬好,我最近碰到一个Boost.Asio相关的棘手问题,折腾好几天了还没头绪,想请教下大家有没有什么思路或者排查方向。

我的程序架构是这样的:用了单个io_context实例,配合多个工作线程,每个线程都会调用io_context::run()来处理任务。任务是通过spawn或者post提交到全局io_context或者它派生的strand上,正常情况下工作线程都会正常处理这些任务。

但程序连续跑个几天之后,偶尔会出现完全停止接收新任务的异常情况:此时所有工作线程看起来都是空闲状态,卡在等待新任务的环节,但新提交的任务既不被执行,甚至感觉像是根本没被io_context接收。

当时捕获到的工作线程调用栈如下:

+ 7794 thread_start (in libsystem_pthread.dylib)
+ 8 [0xptr]
+ 7794 _pthread_start (in libsystem_pthread.dylib)
+ 136 [0xptr]
+ 7794 boost::(anonymous namespace)::thread_proxy(void*) (in myprog1.dsym)
+ 188
+ 3450312 [0xptr]
+ 7794 boost::detail::thread_data<Service::ServiceImpl::Run(std::__1::function<void ()> const&)::$_1>::run() (in myprog1.dsym)
+ 176
+ 10518812 [0xptr]
+ 7794 boost::asio::io_context::run() (in myprog1.dsym)
+ 32
+ 10147768 [0xptr]
+ 7794 boost::asio::detail::scheduler::run(boost::system::error_code&) (in myprog1.dsym)
+ 264
+ 7744452 [0xptr]
+ 7794 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) (in myprog1.dsym)
+ 304
+ 7745104 [0xptr]
+ 7794 _pthread_cond_wait (in libsystem_pthread.dylib)
+ 984 [0xptr]
+ 7794 __psynch_cvwait (in libsystem_kernel.dylib)
+ 8 [0xptr]

需要说明的是,出现这个问题的时候,我的代码还是一直在正常往io_context提交任务的,但就是没任何反应。

想请大家帮忙分析下可能的原因,或者给一些调试的具体建议——比如有没有办法在出现这种异常场景的时候,去查看或者导出io_context的内部状态?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 10:44:51