執行緒和 程序 包括鎖

2021-07-13 09:52:51 字數 1808 閱讀 6922

兩者比較

程序程式

動態的資料段

短暫的永久的

堆疊段+pcb

乙個程序只能對應乙個程式

乙個程式可以對應多個程序

程序執行緒

是資源競爭的基本單位

程式執行最小單位

執行緒共享程序資料,但也有自己的一部分資料:如下

+ 執行緒id

+ 一組暫存器 (ip,sp,狀態)

+ 棧

+ errno

+ 訊號狀態

+ 優先順序

執行緒模型

+ n:1 使用者執行緒模型

+ 1:1 核心執行緒模型

+ n:m混合執行緒模型

呼叫pthread_join等待乙個執行緒終止,把執行緒和unix程序相比,pthread_create類似於fork,pthread_join 則類似於waitpid

程序執行緒

pid_t

thread_t

fork

pthread_create

waitpid

pthread_join

exit

pthread_exit

僵程序僵執行緒waitpid

pthread_join

pthread_detach

kill

pthread_cancel

自殺 pthread_exit 或是用return

他殺 pthread_cancel

為了解決死鎖的問題

phread_cond_wait(&g_cond,&g_mutex);
這個函式內部實現了幾步機制:

+ 對g_mutex進行解鎖

+ 等待條件,直到執行緒向它發起通知

+ 重新對g_mutex進行加鎖操作

while(1)

while(1)

pthread_cond_signal函式
向同乙個等待條件的執行緒發起通知,如果沒有任何乙個執行緒處理等待條件的狀態,這個通知將被忽略

pthread_cond-broad_cast
向所有等待執行緒發起通知

python執行緒鎖 守護執行緒,程序鎖 守護程序

1 守護程序 1.1 什麼是守護程序?1 守護程序會在主程序 執行結束的情況下,立即結束。2 守護程序本身其實就是乙個子程序。3 主程序在其 結束後已經執行完畢 守護程序在此時就被 然後主程序會一直等非守護的子程序都執行完畢後 子程序的資源才會結束。1.2 為什麼要用守護程序?1 守護程序本身就是乙...

Linux程序鎖和執行緒鎖的本質區別

基本概念 大部分同學都知道執行緒同步和程序同步的概念,執行緒同步 多執行緒程式設計中,解決共享資源衝突的問題 程序同步 多程序程式設計中,解決共享資源衝突的問題 但是部分同學對執行緒同步和程序同步研究得不夠深入,比如互斥鎖和條件變數能不能同時用於執行緒同步和程序同步,本質上有什麼區別。首先我們知道,...

程序 執行緒 鎖的概念

程序狀態的轉換 程序在執行期間,不斷地從一種狀態轉換到另一種狀態,它可以多次處於就緒狀態和執行狀態,也可以多次處於阻塞狀態。程序表 為實現程序模型,每個程序占用乙個程序表項,該程序表項包含了程序狀態的重要資訊,包括程式計數器 堆疊指標 記憶體分配狀況 所開啟檔案的狀態 帳號和排程資訊等。為什麼多執行...