兩者比較
程序程式
動態的資料段
短暫的永久的
堆疊段+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程序鎖和執行緒鎖的本質區別
基本概念 大部分同學都知道執行緒同步和程序同步的概念,執行緒同步 多執行緒程式設計中,解決共享資源衝突的問題 程序同步 多程序程式設計中,解決共享資源衝突的問題 但是部分同學對執行緒同步和程序同步研究得不夠深入,比如互斥鎖和條件變數能不能同時用於執行緒同步和程序同步,本質上有什麼區別。首先我們知道,...
程序 執行緒 鎖的概念
程序狀態的轉換 程序在執行期間,不斷地從一種狀態轉換到另一種狀態,它可以多次處於就緒狀態和執行狀態,也可以多次處於阻塞狀態。程序表 為實現程序模型,每個程序占用乙個程序表項,該程序表項包含了程序狀態的重要資訊,包括程式計數器 堆疊指標 記憶體分配狀況 所開啟檔案的狀態 帳號和排程資訊等。為什麼多執行...