2

今天我遇到了 POSIX 线程属性,当您第一次使用它们时,它们有点奇怪。我有点困惑pthread_attr_setdetachstate,它指出:

POSIX 线程默认处于 Join 状态(与创建它的线程),但为了加入它们,我们必须显式调用pthread_join()加入线程。

pthread_detach即使线程属性设置为,我们是否需要显式调用detach

4

3 回答 3

3

不,你甚至不应该这样做:

尝试分离已经分离的线程会导致未指定的行为。

所以真的做其中任何一个,但不是两者兼而有之。如果您从一开始就知道您不会连接线程,请使用带有属性的变体。根据您的系统,这可能会在线程启动时节省一些时间和内存。

于 2012-12-16T08:40:37.933 回答
0

No, you don't. Either one or the other will suffice.

于 2012-12-16T08:25:23.990 回答
0

Do we need to call pthread_detach() explicitly even when the thread attribute is set to detach?

No, it's not necessary, here's an illustration. Both methods (either creating the thread as detached or pthread_detach()ing it) works fine.

于 2012-12-16T08:26:47.120 回答