pthread_detach案例
时间: 2023-10-13 10:23:41 浏览: 87
pthread_detach 函数可以将线程设置为可分离状态,这意味着该线程结束时会自动释放它的资源,无需其他线程调用 pthread_join 函数来回收资源。下面是一个 pthread_detach 函数的例子:
```c
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void* thread_func(void* arg)
{
printf("Thread is running.\n");
sleep(1);
printf("Thread is done.\n");
return NULL;
}
int main()
{
pthread_t thread;
if (pthread_create(&thread, NULL, thread_func, NULL) != 0) {
perror("pthread_create");
exit(EXIT_FAILURE);
}
if (pthread_detach(thread) != 0) {
perror("pthread_detach");
exit(EXIT_FAILURE);
}
// 主线程继续执行
printf("Main thread is done.\n");
return 0;
}
```
在这个例子中,创建了一个新的线程并将其设置为可分离状态,该线程打印一条信息,然后等待一秒钟再打印另一条信息。主线程打印一条信息后就结束了,而新线程会在一秒钟后结束并自动释放其资源。
需要注意的是,如果一个线程已经设置为可分离状态,就不能再调用 pthread_join 函数来等待它结束,否则会出现 undefined behavior。
阅读全文