multithreading - boost 线程异常处理

标签 multithreading exception boost exception-handling boost-thread

我试图在线程中抛出异常并允许调用进程捕获它。但是,这似乎会导致整个应用程序崩溃。请参阅附加的测试代码从不打印任何退出语句。

1 #include <boost/thread.hpp>
2 #include <iostream>
3
4 void wait(int seconds)
5 {
6       boost::this_thread::sleep(boost::posix_time::seconds(seconds));
7 }
8
9 void thread()
10 {
11       for (int i = 0; i < 5; ++i)
12       {
13           wait(1);
14           std::cout << i << std::endl;
15       }
16       throw;
17 }
18
19 int main()
20 {
21     try
22     {
23         boost::thread t(thread);
24         t.join();
25         std::cout << "Exit normally\n";
26     }
27     catch (...)
28     {
29         std::cout << "Caught Exception\n";
30     }
31 }

最佳答案

看看 boost 异常:Transporting of Exceptions Between Threads .
这种方法对我很有效。

关于multithreading - boost 线程异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8161962/

相关文章:

java - 锁定中心化交易

java - 如何在不同的线程上运行程序的某些部分并将变量引用到线程?

java - 如何在Java中的方法 "throws"上指定消息?

c++ - 检查有效线程

c++ - 运算符 = 不明确 (C++)

vb.net - 如何使用模块从线程更新主窗体创建新的主窗体?

java - 需要在多线程环境中实现 ArrayList 的傻瓜式同步

java - 为什么我的Java程序在捕获异常后退出?

java - 保留:连接被拒绝:连接

c++ - 删除 .. 在 boost filesystem::complete