【问题标题】:thread handling线程处理
【发布时间】:2012-07-05 09:06:26
【问题描述】:

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

【问题讨论】:

  • 线程 A 中当前正在执行的操作会发生什么?
  • 有时候我们需要多进程编程而不是多线程是有原因的。
  • 可能是线程间的看门狗机制
  • 看来this 是你所需要的。

标签: c multithreading exception-handling


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-25
        • 2013-04-29
        • 2017-04-12
        • 1970-01-01
        • 1970-01-01
        • 2013-06-19
        • 2020-01-27
        • 2016-08-21
        相关资源
        最近更新 更多