Multithreading 崩溃的线程是否总是让整个进程崩溃

Multithreading 崩溃的线程是否总是让整个进程崩溃,multithreading,segmentation-fault,operating-system,stack-overflow,Multithreading,Segmentation Fault,Operating System,Stack Overflow,我最近在学习操作系统,人们说如果进程中的一个线程停止了,那么整个进程都停止了。 我知道,如果我们有一个segfault,那么整个进程将停止,因为所有线程都与进程共享同一堆内存。但是每个线程都有自己的堆栈内存。如果线程的堆栈中有错误,例如线程堆栈溢出(会发生吗?)。如果出现这样的错误,是否会导致整个过程中断?谢谢它可能依赖于操作系统,但通常情况下,如果一个线程崩溃,其他线程将无法安全继续。崩溃的线程可能已损坏共享内存,或者其他线程可能正在等待崩溃的线程执行它现在无法执行的操作。因此,在这种情况下,

我最近在学习操作系统,人们说如果进程中的一个线程停止了,那么整个进程都停止了。
我知道,如果我们有一个segfault,那么整个进程将停止,因为所有线程都与进程共享同一堆内存。但是每个线程都有自己的堆栈内存。如果线程的堆栈中有错误,例如线程堆栈溢出(会发生吗?)。如果出现这样的错误,是否会导致整个过程中断?谢谢

它可能依赖于操作系统,但通常情况下,如果一个线程崩溃,其他线程将无法安全继续。崩溃的线程可能已损坏共享内存,或者其他线程可能正在等待崩溃的线程执行它现在无法执行的操作。因此,在这种情况下,终止整个过程是合乎逻辑的。当然可以。任何线程都可以生成堆栈溢出。进程加载器创建的线程在应用程序入口点“主线程”运行代码,与用户代码创建的进程线程没有什么不同——如果它破坏了堆栈分配,它会segfaults/AV:)……但是,一些操作系统允许在用户代码中捕获结构化异常。我认识一个朋友。。。。。。。他将这样一个异常处理程序放在他的大部分线程代码中,就在“while true”循环中,因此AV基本上被忽略了。当然,我自己决不会屈尊于这种做法,即使我会因为延迟交付而失去一份有利可图的合同……(我听说两年后AV得到了修复,最终找到了它的来源:)