執行緒控制(一) 執行緒的建立與終止

2021-08-19 13:27:59 字數 1917 閱讀 5903

引言:

我們先在學的執行緒都是使用者級庫執行緒(posix),我們通過基本的學習認識到了與執行緒有關的函式構成了乙個完整的系列,絕大多數的函式的名字都是以「pthread」打頭的,在使用這些函式的時候引入的標頭檔案是

pthread_create函式

錯誤檢查:

1

#include

2#include

3#include

4#include

5#include 67

void *rout(void *arg)

8 15 }

1617

1819

int main(void)

20 30//建立成功

31for(;;)

32

36 }

~

**執行的結果:

我們可以看到我們已經建立好了乙個新的執行緒。

struct   task_struct

;

使用者態

系統呼叫

核心程序描述符中對應的結構

執行緒id

pid_t gettpid(void);

pid_t pid

執行緒id

pid_t getpid(void);

pid_t tgid

現在介紹的執行緒id,不同於pthread_t型別的執行緒id,和程序id一樣,執行緒id是pid_t型別的變數,而且是唯一標識執行緒的乙個整形變數,如何檢視乙個執行緒的id呢?

我們可以看出a.out是多執行緒的,程序id為3873,程序中有兩個執行緒為3873和3874

ps命令中的-l選項,會顯示以下資訊

lwp:執行緒id,即gettid()系統呼叫的返回值

nlwp:執行緒組內線程的個數

linux下提供了getpid系統呼叫來返回其執行緒id,如果需要獲得執行緒id,則可採用:

#include  pid_t   tid;

tid=syscall(sys_gettid);

執行緒組id等於執行緒id,group_leader指向自身

p->tgid=p->pid;

p->group_leader=p;

init_list_head(&p->thread_group);

對於linux目前實現的nptl實現而言,pthread_t 型別的執行緒id,本質上就是乙個程序位址空間上的乙個位址。

如果需要只終止某個執行緒而不終止整個執行緒

pthread_exit函式

pthread_cancel函式

執行緒 執行緒建立與終止

include intpthread create pthread t restrict thread,const pthread attr t restrict attr,void start routine void void restrict arg 0,失敗返回錯誤號。0,失敗返回 1,而錯...

執行緒建立以及執行緒控制

在linux下pcb模擬實現程序,通俗的說就是乙個大的pcb下有很多小的pcb,稱為輕量級程序。在乙個程序中有多個pcb,而這些所有的pcb共用同乙份虛擬位址空間。而這些pcb共同基層構成乙個pcb組,乙個執行緒組就為乙個程序。3.乙個執行緒是程式執行的基本單位,程序是資源排程的基本單位。執行緒是c...

Linux 執行緒控制 執行緒建立

作業系統並沒有提供執行緒控制的相關介面,大佬分裝了一套執行緒控制介面。執行緒裡我們用庫函式,所以說這套介面建立的執行緒是使用者態執行緒,並且這個使用者態執行緒在作業系統中對應了乙個輕量級程序。功能 建立 個新的執行緒 原型 int pthread create pthread t thread,co...