獲取唯一的系統內核線程ID (唯一)

 在linux下每一個進程都一個進程id,類型pid_t,可以由 getpid()獲取。

      POSIX線程也有線程id,類型pthread_t,可以由 pthread_self()獲取,線程id由線程庫維護。

      但是各個進程獨立,所以會有不同進程中線程號相同節的情況。那麼這樣就會存在一個問題,我的進程p1中的線程pt1要與進程p2中的線程pt2通信怎麼辦,進程id不可以,線程id又可能重複,所以這裏會有一個真實的線程id唯一標識,tid。glibc沒有實現gettid的函數,所以我們可以通過linux下的系統調用 syscall(SYS_gettid) 來獲得。

 syscall(SYS_gettid)獲得的是本線程的ID 在本線程的任意位置,使用系統調用即可獲取本線程的id,這樣不需要使用全局數據存放線程ID了 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章