併發 死鎖與同步

2021-10-05 09:18:24 字數 921 閱讀 4267

1、簡介

(1)兩個併發的程序,其中乙個程序對另乙個程序的影響常常是不可預期的

(2)兩個併發程序執行的相對速度無法相互控制

(3)程序執行的相對速度不能由程序自己來控制,還與程序排程策略有關

(4)不確定性也是併發系統的乙個特徵

1、簡介

死鎖指多個程序在執行過程中因爭奪資源而造成的一種僵局

2、出現死鎖四個必要條件

(1)資源互斥:乙個資源只能被乙個程序使用

(2)請求與保持:當乙個程序因請求資源而阻塞時候,保持已獲得資源不放

(3)不剝奪:程序已獲得資源,在未使用完成之前,不能被其它程序清醒剝奪

(4)迴圈等待:若干程序之間形成一種頭尾相接的迴圈等待資源關係

3、原因

(1)當系統中多個程序使用共享資源,並且資源不足以滿足需要,會引起程序對資源的競爭而產生死鎖

(2)程序間推進的順序非法,請求和釋放資源的順序不當,同樣也會導致產生程序死鎖

(3)資源分配不當

1、空閒讓進

當無程序處於臨界區時,表明臨界資源處於空閒狀態

允許乙個請求進入臨界區的程序立即進入臨界區,以有效地利用臨界資源

2、忙則等待

當已有程序處於臨界區時,表明臨界資源正在被訪問,因而其它試圖進入臨界區地程序必須等待,以保證對臨界資源的互斥訪問呢

3、有限等待

對要求訪問臨時資源的程序,應保證在有限時間內能進入自己的臨界區,以免陷入「死等」狀態

4、讓權等待

當程序不能進入自己的臨界區時,應立即釋放處理機,以免程序陷入「忙等」狀態

併發的同步互斥與死鎖

程式執行的順序性 程式執行的併發性 與時間有關的錯誤 程序的協作和競爭 協作 某些併發程序為完成同一任務而共享某些資料,形成協作關係 互斥與同步的區別 臨界區排程原則 臨界區管理的peterson演算法 bool inside 2 inside 0 false inside 1 true enum ...

同步與死鎖

乙個多執行緒的程式如果通過 runnable 介面實現,則意味著類中的屬性可被多個執行緒共享,那麼在實際應用中,比如賣票程式,在網路延遲等情景下,就有可能出現問題。即多個執行緒物件同時操作同一共享資源 class mythread implements runnable catch interrup...

執行緒同步與死鎖

執行緒同步與死鎖 課程大綱 一 多執行緒共享資料 1 在多執行緒的操作中,多個執行緒有可能同時處理同乙個資源,這就是多執行緒中的共享資料。二 執行緒同步 1 解決資料共享問題,必須使用同步,所謂同步就是指多個執行緒在同乙個時刻只能有乙個執行緒執行指定 其他執行緒要等到該執行緒執行結束之後才能繼續執行...