在C 中,可以检测到线程的意外终止
In C++, is it possible to detect the unexpected termination of a thread?
我有一个正在处理数据的背景工作线程。
(使用std::thread
创建(
如果该线程用完数据,则该线程的设计用于等待 - 然后在Mote数据进行处理时恢复。
(使用std::condition_variable
(
如果此线程意外终止,我想确保将线程重新启动以新鲜状态重新启动。
,但我不知道如何检测线程终止或对其做出反应。
处理这种情况的最佳方法是什么?
线程只能以受控的方式退出:线程本身决定退出,或者从另一个线程取消。唯一的其他可能性是您的程序或某些外部杀手事件发生崩溃。
如果您运行不同的过程而不是线程,情况会发生变化。在这种情况下,是的,该过程可能会出乎意料地退出,您需要弄清楚如何找出它是否存在。
如果您期望线程中的某些编码会导致出乎意料的出口,则可能只需使用驱动器实例化守卫类。后者可以做一些事情来通知您的系统线程的存在:
struct Watchdog {
~WatchDog() {
restartMe();
}
};
void start() {
WatchDog watcher;
...
}
您可能会尝试从破坏者重新启动线程,或者只是通知另一个Watcher线程您需要重新启动此线程。
原因,对于单独的过程,您需要采用绝对不同的方法,即心灵ping或其他方法。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 在C++中使用cURL和多线程
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在cuda线程之间共享大量常量数据
- 如何将元素添加到数组的线程安全函数?
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 多线程程序中出现意外的内存泄漏
- 线程的意外输出
- 在C 中,可以检测到线程的意外终止
- C++意外的多线程行为
- 在 Linux C++的两个线程之间使用管道的错误/意外行为
- C++线程意外地打印多次相同的行
- 如何监视意外退出的线程
- 线程导致意外崩溃
- 线程意外结束.c++
- 在linux CFS调度下的C/ c++多线程场景中出现意外结果
- TBB线程池意外增加