【问题标题】:thread handling线程处理
【发布时间】:2012-07-05 09:06:26
【问题描述】:
假设一个线程 A 创建了一个线程 B,并且在一段时间后线程 B 因问题而崩溃,是否有可能将控制移回 C 语言中的线程 A。
一种特殊的处理方式。
【问题讨论】:
标签:
c
multithreading
exception-handling
【解决方案1】:
没有。 “控制权传回”根本没有多大意义,因为它们无论如何都是独立执行的——通常,线程 A 不会坐等线程 B 完成,但它会做其他事情。
顺便说一句,线程当然可以检查另一个线程是否仍在运行。检查您的线程库或您正在使用的系统函数。
但是,这只适用于可以称为“软崩溃”的情况;许多崩溃不仅仅是线程做坏事,例如杀死整个进程的硬件异常或破坏内存。因此,尝试在另一个线程中捕获崩溃将是大量的工作,但几乎没有什么好处,如果有的话。最好花时间修复崩溃。
【解决方案2】:
没有。它们是独立的执行线程。一旦线程 A 创建并启动了线程 B,A 和 B 都可以独立执行。
当然如果线程B整个进程崩溃了,线程A也就不存在了……
【解决方案3】:
线程不能调用其他线程,只能向它们发出信号。 “普通”函数/方法调用/返回机制是基于堆栈的,每个线程都有自己的堆栈,(多个线程使用不同的堆栈自动变量运行完全相同的代码是很常见的)。
如果一个线程不能调用另一个线程,那么也不会从一个线程“返回”到另一个线程。