今天我遇到了 POSIX 线程属性,当您第一次使用它们时,它们有点奇怪。我有点困惑pthread_attr_setdetachstate
,它指出:
POSIX 线程默认处于 Join 状态(与创建它的线程),但为了加入它们,我们必须显式调用
pthread_join()
加入线程。
pthread_detach
即使线程属性设置为,我们是否需要显式调用detach
?
今天我遇到了 POSIX 线程属性,当您第一次使用它们时,它们有点奇怪。我有点困惑pthread_attr_setdetachstate
,它指出:
POSIX 线程默认处于 Join 状态(与创建它的线程),但为了加入它们,我们必须显式调用
pthread_join()
加入线程。
pthread_detach
即使线程属性设置为,我们是否需要显式调用detach
?
不,你甚至不应该这样做:
尝试分离已经分离的线程会导致未指定的行为。
所以真的做其中任何一个,但不是两者兼而有之。如果您从一开始就知道您不会连接线程,请使用带有属性的变体。根据您的系统,这可能会在线程启动时节省一些时间和内存。
No, you don't. Either one or the other will suffice.
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.