线程的创建
\quad\; v o i d ∗ p t h r e a d _ d e t a c h ( t h r e a d _ i d ) \color{blue}{void\quad* pthread\_detach(thread\_id)} void∗pthread_detach(thread_id)
线程的分离
\quad\;
v
o
i
d
∗
p
t
h
r
e
a
d
_
d
e
t
a
c
h
(
t
h
r
e
a
d
_
i
d
)
\color{blue}{void\quad* pthread\_detach(thread\_id)}
void∗pthread_detach(thread_id)
\quad\;
函数功能:
\quad\;
使线程ID为thread_id的线程处于分离状态,一旦线程处于分离状态,该线程终止时,底层资源立即被回收;否则,子线程在终止时状态会一直保存(占用系统资源)直到主线程调用pthread_join(thread_id, NULL)获取线程的退出状态。
综上,一般在主线程使用pthread_create()创建子线程后,可以调用pthread_detach(thread_id)来分离刚刚创建的子线程,这里的thread_id是指子线程的thread_id;如此一来,该子线程终止时底层资源就可以立即被回收;
\quad\;
v
o
i
d
∗
p
t
h
r
e
a
d
_
d
e
t
a
c
h
(
p
t
h
r
e
a
d
_
s
e
l
f
(
)
)
\color{blue}{void\quad*pthread\_detach(pthread\_self())}
void∗pthread_detach(pthread_self())
被创建的子线程也可以自己分离自己,子线程调用pthread_detach(pthread_self())就分离了自己,因为pthread_self()这个函数返回的就是自己本身的线程ID;