📜  pthread_detach 示例 (1)

📅  最后修改于: 2023-12-03 15:03:52.964000             🧑  作者: Mango

pthread_detach 示例

简介

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 函数可以将一个线程设置为 分离线程,这意味着它的资源会在该线程退出时自动被回收,并且不会被其他线程等待。通过合理使用 分离线程 可以提高程序的效率。