C/C++ Linux pthread_setname_np 設定執行緒名稱用法

本篇 ShengYu 介紹 C/C++ Linux/Unix 執行緒 pthread_setname_np() 用法,pthread_setname_np 是用來設定該執行緒名稱的函式,詳細用法範例請繼續往下閱讀。

用 pthread_setname_np 設定 pthread_create 出來的執行緒名稱

在 C 或 C++ 中使用 pthread 設定執行緒名稱可以透過 pthread_setname_np 函式來達成。這是一個非標準的 POSIX 擴展,因此在不同的系統上可能會有所不同。通常您可以這樣使用它:

cpp-pthread_setname_np.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_setname_np.cpp -o a.out -pthread
#include <stdio.h>
#include <pthread.h>

void * thread_func(void* arg) {
// 設定執行緒名稱
char name[16] = "MyThread";
pthread_setname_np(pthread_self(), name);

// ...

return NULL;
}

int main() {
pthread_t tid;
pthread_create(&tid, NULL, thread_func, NULL);

// 等待執行緒結束
pthread_join(tid, NULL);

return 0;
}

在這個例子中,pthread_setname_np 函式用來設定執行緒名稱為 MyThread。請注意該名稱通常只能設定 15 個字元再加一個結束字元,超過長度可能會設定名稱失敗。

用 pthread_setname_np 設定 C++ std::thread 中執行緒名稱

C++11 的 std::thread 並沒有直接提供設定執行緒名稱的功能,但你還是可以使用 pthread_setname_np 來為 std::thread 設定名稱。以下是一個範例:

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

void thread_func() {
// 設定執行緒名稱為 "MyThread"
pthread_setname_np(pthread_self(), "MyThread");

// ...
}

int main() {
std::thread t(thread_func);

// 等待執行緒結束
t.join();

return 0;
}

在這個例子中是使用 pthread_setname_np 來設定 C++ std::thread 執行緒的名稱為 MyThread

以上就是 C/C++ Linux pthread_setname_np 設定執行緒名稱用法介紹。
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

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