【问题标题】:How to make thread crash will not lead to process crash?如何让线程崩溃不会导致进程崩溃?
【发布时间】:2021-03-28 18:42:00
【问题描述】:

我的项目语言是 C,只会运行一个进程和多个线程。

一个线程总是崩溃,它会导致进程崩溃。

过程的稳定性是非常非常重要的。所以我想知道是否可以“隔离”这个线程。例如,如果我们可以截获 SIGSEGV 信号,我们就可以重启这个线程。

【问题讨论】:

    标签: c multithreading process


    【解决方案1】:

    如果一个线程做了一些可能导致崩溃的事情,它可能会影响另一个线程,因为它们共享相同的内存空间,所以没有办法隔离它们。

    您需要修复您的程序,使其一开始就不会崩溃。首先使用内存检查器,例如 valgrind。

    【讨论】:

      【解决方案2】:

      过程的稳定性非常重要。

      那么找到并修复 SIGSEGV 的原因非常重要,而不是通过尝试恢复崩溃的线程来“掩盖裂缝”。

      为什么?

      • 因为 SIGSEGV 的根本原因可能是将在重新启动的线程中重新触发的错误,从而导致线程无休止的崩溃/重新启动。
      • 因为 SIGSEGV 的根本原因可能是不同线程中的问题......这可能会继续触发问题。
      • 因为在导致 SIGSEGV 的执行步骤中,线程可能损坏了共享数据结构或执行了其他可能导致其他线程崩溃、卡住或以其他方式出现错误行为的事情。

      【讨论】:

        【解决方案3】:

        取决于崩溃的原因。它可能与内存相关,导致数据损坏,从而导致进程崩溃。 如果程序确实崩溃并且很严重,请使用 Monit 重新启动它。

        【讨论】:

          猜你喜欢
          • 2013-10-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-04
          • 1970-01-01
          • 2018-08-12
          相关资源
          最近更新 更多