訊號量,互斥鎖,自旋鎖

2021-09-07 09:13:53 字數 508 閱讀 1512

個人理解:

訊號量(程序間的通訊機制(單一個數的訊號),與訊息郵箱,訊息佇列,機理類同,量不同,)用訊號量肯定掉cpu;

自旋鎖:保護區域不掉cpu,持續查詢,等待(不可用時域長狀態);

切記: 時域範圍: 在程序間的通訊機制函式狀態 ∩ 鎖 = 0;

互斥鎖與自旋鎖

互斥鎖:執行緒會從sleep(加鎖)——>running(解鎖),過程中有上下文的切換,cpu的搶占,訊號的傳送等開銷。

自旋鎖:執行緒一直是running(加鎖——>解鎖),死迴圈檢測鎖的標誌位,機制不複雜。

自旋鎖 == while(1),故此不可時間過長;

互斥鎖:執行緒a進入鎖,執行鎖與解鎖之間的程式,執行緒b進入加鎖,直接退出不可加鎖;

互斥鎖與訊號量

乙個互斥,乙個是同步

互斥是:執行緒b不可加鎖直接掉cpu;同步是執行緒b進入解鎖執行;

自旋鎖,互斥鎖,訊號量

自旋鎖,互斥鎖,訊號量 樂觀鎖和悲觀鎖只是一種理論,是從思想上劃分的。自旋鎖和互斥鎖是應用層確確實實的鎖,用於同步訪問控制 如果一定要劃分,從只有乙個執行緒可以擁有鎖來說,我覺得自旋鎖和互斥鎖應該都屬於悲觀鎖,因為一般的應用不需要支援事物回滾的操作。但是沈詢的直播中說,互斥鎖屬於悲觀鎖 sleep ...

自旋鎖,訊號量,互斥鎖比較

為了避免併發,防止競爭。核心提供了一組同步方法來提供對共享資料的保護。我們的重點不是介紹這些方法的詳細用法,而是強調為什麼使用這些方法和它們之間的差別。linux使用的同步機制可以說從2.0到2.6以來不斷發展完善。從最初的原子操作,到後來的訊號量,從大核心鎖到今天的自旋鎖。這些同步機制的發展伴隨l...

訊號量,互斥鎖

注 摘自 程式設計師的自我修養 相關章節。關鍵字 執行緒同步 原子操作 鎖 二元訊號量 訊號量 互斥量 臨界區 讀寫鎖 條件變數 原子操作 共享資料 全域性變數或堆變數 的自增 操作在多執行緒環境下會出現錯誤是因為這個操作 一條c語句 被編譯為彙編 後不止一條指令,因此在執行的時候可能執行了一半就被...