0
在RW documentation中,建議使用rwThreadHash來獲取用於調試的threadId,但仍然與線程上的實際Linux線程ID不匹配。任何想法如何得到它(不一定以便攜的方式)?如何從RWThreadId獲取Linux線程ID?
cout << rwThreadHash(threadId()) << endl;
1477159840
在RW documentation中,建議使用rwThreadHash來獲取用於調試的threadId,但仍然與線程上的實際Linux線程ID不匹配。任何想法如何得到它(不一定以便攜的方式)?如何從RWThreadId獲取Linux線程ID?
cout << rwThreadHash(threadId()) << endl;
1477159840
我認爲你正在尋找gettid()
從pthread_self() man page說明:由pthread_self()
返回的線程ID是不一樣的東西通過調用返回gettid(2)內核線程ID。你打印的東西看起來像一個pthread ID。
我知道我可以使用pthread調用來獲取* current * tid,但問題是我實際上使用的庫是返回它管理的線程的RWThreadId,我無法訪問,所以這就是爲什麼我試圖從一種類型的線程ID轉換爲基於Linux的普通Linux。 – naumcho
pthread id和內核線程ID是兩個不同的實體。您似乎可以訪問前者,但希望訪問後者。據推測RogueWave爲您提供了一些方法來指定將在線程中運行的函數/方法。您需要在該方法中放置gettid()以返回內核標識或至少將其顯示在日誌中。如果你在說線程正在運行一些你不能改變的庫代碼,那麼你可能確實是SOL。 – Duck