2012-12-28 32 views
1

我有一个奇怪的问题,我找不到答案。我们假设我使用pthread_create(...)启动了一个包含while(1)(即线程永不返回)的线程,但是一旦创建它,​​我就分离线程。稍后,启动该线程的对象被销毁。我需要终止一个线程,如果它的分离?

该线程会发生什么?这是一个永远被采纳的资源吗?

回答

4

线程属于进程。只要进程终止,进程内的所有线程也会终止。销毁启动线程的对象不会影响线程的运行状态。但是,如果该线程可以访问被销毁的对象,则可能会遇到核心转储问题。

+0

在Windows上,这取决于您是否使用_ExitThread_来终止主线程。因此,如果使用_ExitThread_来终止主线程,则在所有线程都终止之前,进程将不会终止:[link](http://blogs.msdn.com/b/oldnewthing/archive/2010/08/27/10054832.aspx ) – stamhaney

+0

@stamhaney不知道你在评论什么,但是当进程终止时(exit,_exit,_Exit),它的所有线程也都被终止。你说得对,主线程可以终止而不终止进程,但我不确定这个事实在这里有多相关。 –

+0

@MaximYegorushkin,我的意图是指出,如果主线程使用_ExitThread_终止,并且因此该进程中正在运行的线程不会终止,那么进程将不会终止,在这种情况下。评论是特定于埃文斯评论 – stamhaney

相关问题