基本概念:
大部分同學都知道執行緒同步和程序同步的概念,
執行緒同步:多執行緒程式設計中,解決共享資源衝突的問題
程序同步:多程序程式設計中,解決共享資源衝突的問題
但是部分同學對執行緒同步和程序同步研究得不夠深入,比如互斥鎖和條件變數能不能同時用於執行緒同步和程序同步,本質上有什麼區別。
首先我們知道,linux下每個程序都有自己的獨立程序空間,假設a程序和b程序各有乙個互斥鎖,這個鎖放在程序的全域性靜態區,那麼ab程序都是無法感知對方的互斥鎖的。
互斥鎖和條件變數出自posix.1執行緒標準,它們總是可以用來同步乙個程序內的各個執行緒的。如果乙個互斥鎖或者條件變數存放在多個程序共享的某個記憶體區中,那麼posix還允許它用在這些程序間的同步。
看到這裡,是不是發現點了什麼,執行緒同步和程序同步的本質區別在於鎖放在哪,放在私有的程序空間還是放在多程序共享的空間,並且看鎖是否具備程序共享的屬性,
下面列舉了常用的同步機制,使用時需要注意執行緒同步和程序同步初始化的引數的不同。
執行緒同步:
1.互斥鎖
2.讀寫鎖
3.條件變數
4.訊號量
5.自旋鎖
6.屏障(barrier)
程序同步:
1.互斥鎖
2.讀寫鎖
3.條件變數
4.記錄鎖(record locking)
5.訊號量
6.屏障(barrier)
補充:
執行緒和 程序 包括鎖
兩者比較 程序程式 動態的資料段 短暫的永久的 堆疊段 pcb 乙個程序只能對應乙個程式 乙個程式可以對應多個程序 程序執行緒 是資源競爭的基本單位 程式執行最小單位 執行緒共享程序資料,但也有自己的一部分資料 如下 執行緒id 一組暫存器 ip,sp,狀態 棧 errno 訊號狀態 優先順序 執行...
python執行緒鎖 守護執行緒,程序鎖 守護程序
1 守護程序 1.1 什麼是守護程序?1 守護程序會在主程序 執行結束的情況下,立即結束。2 守護程序本身其實就是乙個子程序。3 主程序在其 結束後已經執行完畢 守護程序在此時就被 然後主程序會一直等非守護的子程序都執行完畢後 子程序的資源才會結束。1.2 為什麼要用守護程序?1 守護程序本身就是乙...
執行緒和鎖,鎖公升級
程式 qq.exe feiqiu.exe 這種靜靜的躺在硬碟的軟體 程序 當程式載入到記憶體進行執行的就是程序資源分配的基本單位 執行緒 是程式執行的基本單位 執行緒如何進行排程的?linux是執行緒排程器,os 作業系統 執行緒切換的概念是什麼?context switch cpu儲存現場執行新執...