gpt4 book ai didi

c++ - 在 boost::thread 线程中使用异常

转载 作者:行者123 更新时间:2023-11-30 04:37:19 24 4
gpt4 key购买 nike


我开始尝试使用 boost::threads,但我有点被这个问题困住了:

我不明白为什么这个程序一抛出异常就崩溃了,因为我试图在线程内捕获它。我认为只要处理发生在与抛出相同的线程中,就可以处理异常?

#include <boost/thread.hpp>
#include <exception>

using namespace std;

void doWork();
void thrower();

int main( int argc, char** argv ){
boost::thread worker(doWork);
worker.join();
return 0;
}

void doWork(){
try{
thrower();
}
catch( const exception &e ){
//handle exception
}
}
void thrower(){
// program terminates as soon as the exception is thrown
throw exception();
}

附加信息:
*使用 MinGW32
*Boost v.1.44
*针对线程库的多线程调试dll版本动态链接

最佳答案

我发现了问题:这是 boost 库中的一个错误,仅在使用高于 3.17 的 minGW 版本时才会发生。 Boost trac ticket #4258

应用建议的解决方法并设置预处理器定义BOOST_THREAD_USE_LIB后,我现在可以链接到静态库,并且可以处理异常,只要它们被捕获在同一个抛出它们的线程。

非常感谢您的意见

关于c++ - 在 boost::thread 线程中使用异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3907293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com