pthread_detach函数用法详解
pthread_detach函数简介
- 头文件包含
#include <pthread.h>
- 函数定义
int pthread_detach(pthread_t thread );
- 编译链接选项
-pthread
pthread_detach函数常见使用错误
- 链接错误
undefined reference to `pthread_detach'
解决办法:添加链接选项
-pthread
- 编译错误
warning: implicit declaration of function ‘pthread_detach’ [-Wimplicit-function-declaration]
解决办法:包含头文件
#include <pthread.h>
pthread_detach函数详细描述
pthread_detach ()函数将thread标识的线程标记为分离线程。当一个分离的线程终止时,它的资源会自动释放回系统,而不需要另一个线程与终止的线程连接。
试图分离已分离的线程会导致未指定的行为。
pthread_detach函数返回值
成功时,pthread_detach ()返回0;出错时,它返回一个错误号。
pthread_detach函数错误码
- EINVAL thread不是可接合线程。
- 找不到ID为thread的线程。
pthread_detach函数其他说明
一旦线程被分离,它就不能与pthread_join (3)连接,也不能再次成为可连接的线程。
使用pthread_attr_setdetachstate (3)设置pthread_create (3)的attr参数的分离属性,可以在分离状态下创建新线程
分离的属性仅决定线程终止时系统的行为;如果进程使用exit (3)终止(或者等效地,如果主线程返回),它并不阻止线程终止。
应该为应用程序创建的每个线程调用pthread_join (3)或pthread_detach (),以便为该线程释放系统资源。(但是请注意,当进程终止时,没有执行这些操作之一的任何线程的资源都将被释放。)
pthread_detach函数使用举例
下面的语句分离调用线程:
pthread_detach(pthread_self());
评论区