3

我只是想知道,如果我使用属性和"pthread_attr_setdetachstate"带有参数的函数创建一个分离线程(POSIX) PTHREAD_CREATE_DETACHED,我是否必须在程序结束时销毁线程?

我知道我必须销毁为创建分离线程而创建的属性,但对于线程本身,我真的不知道。

4

2 回答 2

5

我认为您不应该破坏分离的线程。

将线程视为共享相同内存区域的进程。因此,当一个进程被分叉并且子进程在主进程之前完成时,子进程的返回值保存在内核内存中,可以被父进程占用。

分离线程只不过是向内核指示线程的返回或退出状态不是必需的,一旦线程完成就可以忽略。

因此,您不必在程序结束时等待分离线程完成,因为在大多数 POSIX 系统中,如果主线程完成,那么该进程的其他线程也会被系统停止,所以最好在退出主线程之前等待子线程完成。

于 2014-05-15T10:37:53.490 回答
3

据我了解:

如果你不想收集线程的退出状态,那么你可以使用PTHREAD_CREATE_DETACHED. 所以内核会在线程结束后负责清理线程特定的资源。一旦你设置了分离状态。您无法恢复到可加入状态。

因此,您可以在程序中的任何位置销毁该属性。

于 2014-05-15T10:40:25.387 回答