本篇 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 狀態,之後即使主程式要結束退出也會等待該執行緒結束才退出,範例如下,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
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
2main 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 pthread_exit 用法與範例
C/C++ Linux/Unix 讓執行緒跑在指定 CPU 的方法 sched_setaffinity
C/C++ Linux/Unix pthread 建立多執行緒用法與範例
C++ std::thread 建立多執行緒用法與範例