在维护中,我看到项目代码(在Linux上的c/c++
中)调用libc
exit
函数,以防出现一些不可恢复的错误。但是,此进程终止调用用于跨多个线程(每个线程面临不可恢复的方案时)。现在 -
exit
而没有任何副作用。 exit
时(在主线程或任何其他线程中),它是否保证线程的正常退出。 我理解标准(手册页)对此保持沉默,最好的方法是,启动所有线程的正常终止并使用通知机制,必须通知main
线程以便正常终止。但是,由于它是一个正在维护的项目,因此想要在更改之前检查当前行为是否正确。
我面临的问题是,我可以看到随机崩溃,其中一个线程处于exit
调用执行的正当进程之下。
答案 0 :(得分:1)
对于第一个问题,当您调用exit
(来自任何线程,主要或孩子)时,该过程会立即退出。
关于第二个问题,请参阅上面的答案。简而言之,没有。线程不会“优雅地”退出(无论如何从应用程序的角度来看)。