【学习笔记】第二章——信号量机制 用信号量实现互斥、同步
生活随笔
收集整理的這篇文章主要介紹了
【学习笔记】第二章——信号量机制 用信号量实现互斥、同步
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一. 信號量機制
- 整型信號量
- 記錄型信號量
- 例子:
- 總結
- 二. 用信號量實現互斥、同步
- 互斥
- 同步
- 前驅
- 總結
一. 信號量機制
- 信號量:一個用于表示系統中某種資源的數量的變量(整數 or 記錄型變量)
- 一對原語:wait(S) 和 signal(S),S為參數。簡稱P、V操作,因此也可寫成 P(S)、V(S)
整型信號量
- 僅三種操作:初始化、P操作、V操作
- 原子性避免并發、異步導致的問題
- 問題:不滿足“讓權等待”,會發生“忙等”
記錄型信號量
- 結構體取代整型,加入等待隊列
- block 原語:把進程從運行態 => 阻塞態,并掛入信號量的等待隊列
- wakeup原語:把進程從“阻塞態 => 就緒態”,從信號量的等待隊列中喚醒
例子:
- 圖文不便描述。建議還是看視頻,走一遍流程便于理解。p21的20分鐘附近
- S.value 表示 系統某種資源的數目
- 不會出現忙等情況,遵循讓權等待原則
總結
二. 用信號量實現互斥、同步
互斥
- 不同臨界資源,設置不同互斥信號量
- P、V 操作成對出現:缺P不能保證互斥訪問,缺V會導致資源永遠不被釋放
同步
- 前操作之后,執行 V
- 后操作之前,執行 P(要取,保證在【前操作存之后】才能跑)
前驅
- 每一對前驅關系設置一個同步變量
- 在此基礎上走上面的【同步】的 PV 設定方式
總結
- 互斥:信號量初值1
- 同步:信號量初值0
- 前驅:本質上就是更復雜的同步問題
總結
以上是生活随笔為你收集整理的【学习笔记】第二章——信号量机制 用信号量实现互斥、同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 派生类构造的时候一定要调用_没钱的时候,
- 下一篇: 【总结记录】面向对象设计OOP三大特性(