当一个线程遇到异常时,是否可以冻结所有线程
Is it possible to freeze all threads when one thread encounters an exception
我能够打印在运行时捕获异常的线程的堆栈跟踪。我还需要打印在同一进程中运行的其他线程的跟踪。我感兴趣的是找到一种好方法,在一个线程中捕获异常后立即冻结所有线程。
目前,我所能做的就是查询每个活动线程,然后对其执行SuspendThread()。然而,这将导致每个线程在捕获初始异常后执行更长的时间。有没有一种方法可以立即导致每个线程挂起?
谢谢。
您是否尝试从捕获异常的工作线程使用PostMessage()来GUI线程?
建议的简短步骤:
1) GUI线程生成的工作线程很少
2) 工作线程PostMessage()曾捕获异常
3) GUI线程接收消息
4) GUI线程指示剩余的工作线程挂起
注意:定义您自己的消息
通过这种方式,在挂起工作线程之前,您仍然会看到一些延迟。
另一种方法是在工作线程之间使用类似同步对象的事件句柄。
相关文章:
- 如何检查线程是否锁定
- 并发/多线程:是否可以以这种方式生成相同的输出?
- 当我在C++中调用 struce 的只读静态成员时,线程是否安全
- 检查分离的线程是否还活着?
- 将正常函数的工作分配给多个线程是否安全
- 最大线程数 - 如何确定C++线程是否并行运行?
- 如何确定其他线程是否正在运行?
- 线程是否真的在调用 std::future::get() 后启动
- 如何知道分离的STD ::线程是否完成了执行
- 通知线程是否始终需要在修改期间锁定共享数据
- 只写到共享 std::unordered_map 线程是否安全
- 检查线程是否在 c++11 中完成
- C++ 互斥 - 检查另一个线程是否正在等待
- 提升::作用域的线程是否自动分离
- 以下单例实现线程是否安全?
- 确定线程是否已退出
- 我的不同线程是否会看到更新后的shared_ptr对象
- 使用操作当前对象的线程是否安全
- 此同步对象实现线程是否安全
- 线程是否共享一些类字段