執行緒ID與執行緒ID

2021-09-05 10:39:05 字數 892 閱讀 8751

[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...