在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了