[1]nptl標準
1.目前的執行緒實現是 native posix thread library,簡稱nptl 。
2.執行緒又被稱為輕量級程序。
3.每乙個使用者態的執行緒,在核心之中都對應乙個排程實體也擁有自己的程序描述符(task_struct結構體)
4.程序內的所有執行緒呼叫 getpid 函式時返回相同的程序id。
[2]執行緒組
struct task_struct {... // 執行緒組中線程的程序描述符
pid_t pid; // 執行緒id
pid_t tgid; // 程序id
struct task_struct *group_leader; // 主線程的程序描述符
struct list_head thread_group; // 執行緒的程序描述符鍊錶
1.多執行緒的程序,被稱為執行緒組。
2.執行緒組內的每乙個執行緒在核心之中都存在乙個程序描述符task_struct與之對應。
3.獲取執行緒id和程序id
1.gettid() // 獲取執行緒id
2.getpid() // 獲取程序id
3.ps -elf // 檢視系統的所有程序和執行緒
lwp:執行緒id, nlwp:執行緒組內線程的個數。
4.通過/proc/pid/task檢視
5.glibc沒有實現gettid(), 若需程序id,可採用:
int tid = syscall(sys_gettid) // 系統呼叫
6.執行緒組id = 主線程id = 程序id
[3]強調
執行緒 執行緒控制代碼 執行緒ID
什麼是控制代碼 控制代碼是一種指向指標的指標。我們知道,所謂指標是一種記憶體位址。應用程式啟動後,組成這個程式的各物件是住留在記憶體的。如果簡單地理解,似乎我們只要獲知這個記憶體的首位址,那麼就可以隨時用這個位址訪問物件。但是,如果您真的這樣認為,那麼您就大錯特錯了。我們知道,windows是乙個以...
執行緒 執行緒控制代碼 執行緒ID
什麼是控制代碼 控制代碼是一種指向指標的指標。我們知道,所謂指標是一種記憶體位址。應用程式啟動後,組成這個程式的各物件是住留在記憶體的。如果簡單地理解,似乎我們只要獲知這個記憶體的首位址,那麼就可以隨時用這個位址訪問物件。但是,如果您真的這樣認為,那麼您就大錯特錯了。我們知道,windows是乙個以...
列印執行緒ID
通過本程式掌握 1.執行緒的建立函式pthread creat 2.獲取程序id的函式 getpid 3.執行緒可以通過呼叫pthread self函式獲得自身的執行緒id 具體 如下 在linux命令列下輸入如下語句生成可執行程式thread gcc thread.c o thread lpthr...