线程处理

4

假设线程A创建了线程B,经过一段时间后,线程B遇到问题崩溃了,是否有可能在C语言中将控制权返回给线程A。这类似于异常处理。


1
那么,线程A当前正在执行的任何内容会发生什么? - ArjunShankar
有时候我们需要多进程编程而不是多线程,这是有原因的。 - xgwang
也许在线程之间需要一个看门狗机制。 - OSH
看起来这个是你需要的。 - puffadder
3个回答

4

不,“控制权返回”并没有太多意义,因为它们是独立执行的 - 通常情况下,线程A不会等待线程B完成,而是会做其他事情。

顺便说一句,线程当然可以检查另一个线程是否仍在运行。请检查您使用的线程库或系统函数。

但是,这只适用于某种程度上可以称之为“软崩溃”的情况; 许多崩溃会造成比执行错误的线程更多的损坏,例如杀死整个进程的硬件异常或破坏内存。因此,尝试在另一个线程中捕获崩溃将需要大量工作,而且几乎没有任何好处。最好花时间修复崩溃。


3
不。它们是独立的执行线程。一旦线程A创建并启动了线程B, A和B都可以独立执行。 当然,如果线程B崩溃了整个进程,那么线程A也将不存在...

0
线程不能调用其他线程,只能给它们发信号。'正常'的函数/方法调用和返回机制是基于堆栈的,每个线程都有自己的堆栈(很常见的情况是几个线程使用不同的堆栈自动变量运行完全相同的代码)。
如果一个线程不能调用另一个线程,那么一个线程也就没有从另一个线程中返回的可能了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接