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

升级Boost从1.48到1.88后调用boost::thread::try_join_for抛出invalid argument [generic:22]错误求助

升级Boost从1.48到1.88后调用boost::thread::try_join_for抛出invalid argument [generic:22]错误求助

各位好,我最近碰到个Boost版本升级后的棘手问题,想请大家帮忙看看。

我当前的开发环境是基于Yocto项目的嵌入式Linux,刚把Boost从1.48版本升级到了最新的1.88版本,使用的编译器是arm-poky-linux-gnueabi-g++ (GCC) 13.3.0。

这个问题可以用一段简单的代码复现,我原本以为这段代码是完全合法的:

boost::thread t([](){ std::this_thread::sleep_for(std::chrono::seconds(5)); });
try
{
    std::cout << BOOST_VERSION << std::endl;
#ifdef BOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED
    t.try_join_for(std::chrono::seconds(1));
#endif
}
catch (const std::exception& e)
{
    std::cerr << "Exception caught: " << e.what() << std::endl;
}

运行这段代码时,调用boost::thread::try_join_for会抛出invalid argument [generic:22]的错误。在之前的Boost 1.48版本里,这段代码运行完全正常,没有任何异常。

我初步猜测可能是高版本Boost对线程操作的参数校验变得更严格了,或者是嵌入式平台上的std::chrono实现和新版本Boost的兼容性出了问题,但暂时还没找到具体原因。有没有朋友遇到过类似的问题,或者能给我一些排查的方向?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 13:42:57