4

假设一个线程 A 创建了一个线程 B 并且在一段时间后线程 B 因问题而崩溃,是否有可能将控制移回 C 语言中的线程 A。一种特殊的处理方式。

4

3 回答 3

4

不。“控制权传回”根本没有多大意义,因为它们无论如何都是独立执行的——通常,线程 A 不会坐等线程 B 完成,但它会做一些事情别的。

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

但是,这只适用于可以称为“软崩溃”的情况;许多崩溃不仅仅是线程做坏事,例如杀死整个进程的硬件异常或破坏内存。因此,尝试在另一个线程中捕获崩溃将是大量的工作,但几乎没有什么好处,如果有的话。最好花时间修复崩溃。

于 2012-07-05T09:13:27.667 回答
3

不,它们是独立的执行线程。一旦线程 A 创建并启动了线程 B,A 和 B 都可以独立执行

当然如果线程 B 整个进程都崩溃了,线程 A 就不会再存在了……

于 2012-07-05T09:08:36.107 回答
0

线程不能调用其他线程,只能向它们发出信号。“正常”函数/方法调用/返回机制是基于堆栈的,每个线程都有自己的堆栈,(多个线程使用不同的堆栈自动变量运行完全相同的代码是很常见的)。

如果一个线程不能调用另一个线程,那么也没有从一个线程到另一个线程的“返回”。

于 2012-07-05T09:43:42.563 回答