C/C++ Linux pthread_detach 用法與範例

本篇 ShengYu 介紹 C/C++ Linux/Unix 執行緒 pthread_detach() 用法,pthread_detach() 是標示該執行緒為 detach 狀態。一個 detach 執行緒結束時,他的資源會自動釋放歸還給系統,而不需要另一個執行緒使用 join 的方式來結束該執行緒。

pthread_detach 基本用法

以下簡單示範如何使用 pthread_detach(),當一個執行緒變成 detach 狀態時,它就不能使用 pthread_join() 來 join 或者變成 joinable。

在 main 主程式中用 pthread_create() 建立執行緒後使用 pthread_detach() 將該執行緒變成 detach 狀態,之後即使主程式要結束退出也會等待該執行緒結束才退出,範例如下,

cpp-pthread_detach.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// g++ cpp-pthread_detach.cpp -o a.out -pthread
#include <stdio.h>
#include <pthread.h>

void * foo(void *arg) {
printf("foo\n");

return (void *)"hello";
}

int main() {
pthread_t t1;

if (pthread_create(&t1, NULL, foo, NULL) != 0) {
fprintf(stderr, "Error: pthread_create\n");
}

pthread_detach(t1);

printf("main end\n");

return 0;
}

結果輸出如下,

1
2
main end
foo

其它參考
pthread_detach(3) - Linux manual page
https://man7.org/linux/man-pages/man3/pthread_detach.3.html

其它相關文章推薦
C/C++ 新手入門教學懶人包
C/C++ Linux pthread_join 用法與範例
C/C++ Linux/Unix 讓執行緒跑在指定 CPU 的方法 sched_setaffinity
C/C++ Linux/Unix pthread 建立多執行緒用法與範例
C++ std::thread 建立多執行緒用法與範例