📅  最后修改于: 2023-12-03 15:03:52.964000             🧑  作者: Mango
pthread_detach
函数可以将一个线程设置为 分离线程,这意味着它的资源会在该线程退出时自动被回收,并且不会被其他线程等待。与之相对的是 非分离线程,它的资源需要在该线程被显示地回收前一直保存。
pthread_detach
的函数原型如下:
int pthread_detach(pthread_t thread);
输入参数为 thread
,是被设置为 分离线程 的线程号。如果函数执行成功则返回 0,执行失败则返回其他错误码。
下面是一个简单的 C 语言程序,它创建了一个线程并将其设置为 分离线程。
#include <pthread.h>
#include <stdio.h>
void* worker(void* arg) {
printf("[WORKER] Starting...\n");
printf("[WORKER] Done!\n");
return NULL;
}
int main(int argc, char** argv) {
pthread_t tid;
int rc = pthread_create(&tid, NULL, worker, NULL);
if (rc) {
printf("[MAIN] Failed to create thread\n");
} else {
printf("[MAIN] Thread created with tid=%ld\n", tid);
rc = pthread_detach(tid);
if (rc) {
printf("[MAIN] Failed to detach thread\n");
} else {
printf("[MAIN] Thread detached\n");
}
}
pthread_exit(NULL);
return 0;
}
程序的输出应该是这样的:
[MAIN] Thread created with tid=140308081184768
[MAIN] Thread detached
[WORKER] Starting...
[WORKER] Done!
可以看到,程序成功地创建了一个线程,并将其设置为 分离线程。当该线程完成工作后,它的资源被立即回收,不需要其他线程等待。
pthread_detach
函数可以将一个线程设置为 分离线程,这意味着它的资源会在该线程退出时自动被回收,并且不会被其他线程等待。通过合理使用 分离线程 可以提高程序的效率。