多執行緒程式設計2 鎖 死鎖

2021-07-27 09:12:52 字數 707 閱讀 3326

1.為什麼要用鎖來同步?

同步的含義就是排隊

,按照先後順序去對共享的資源執行自己的操作。

2.鎖來保護資源的含義是什麼?

含義與同步類似,都是為了

保護共享資源

3.racing condition

執行緒或程序之間訪問資料的先後順序決定了資料修改的結果,這種現象在多執行緒程式設計中是經常見到的。

4.死鎖

是指兩個或兩個以上的程序在執行過程中,因爭奪資源而造成的一種互相等待的現象

死鎖的發生必須具備以下四個必要條件。

1)互斥條件:指程序對所分配到的資源進行排它性使用,即在一段時間內某資源只由乙個程序占用。如果此時還有其它程序請求資源,則請求者只能等待,直至占有資源的程序用畢釋放。

2)請求和保持條件:指程序已經保持至少乙個資源,但又提出了新的資源請求,而該資源已被其它程序占有,此時請求程序阻塞,但又對自己已獲得的其它資源保持不放。

3)不剝奪條件:指程序已獲得的資源,在未使用完之前,不能被剝奪,只能在使用完時由自己釋放。

4)環路等待條件:指在發生死鎖時,必然存在乙個程序——資源的環形鏈,即程序集合中的p0正在等待乙個p1占用的資源;p1正在等待p2占用的資源,……,pn正在等待已被p0占用的資源。

多執行緒程式設計2 互斥鎖

互斥鎖總結 分類 互斥鎖mutex 條件變數cond 初始化 靜態方式 pthread mutex initializer pthread mutex t mutex pthread mutex initalizer pthread cond initializer pthread cond t c...

多執行緒死鎖 活鎖 飢餓

1 死鎖 所謂死鎖是指多個執行緒因競爭資源而造成的一種僵局 互相等待 若無外力作用,這些程序都將無法向前推進。理解的例子 生活中的乙個例項,2個人一起吃飯但是只有一雙筷子,2人輪流吃 同時擁有2只筷子才能吃 某乙個時候,乙個拿了左筷子,一人拿了右筷子,2個人都同時占用乙個資源,等待另乙個資源,這個時...

多執行緒競爭 鎖 互斥鎖 死鎖 GIL

同乙個程序裡執行緒是資料共享的,當各個執行緒訪問資料資源時會出現競爭狀態,資料幾乎同步會被多個執行緒占用,造成資料混亂。python提供的對執行緒控制的物件。鎖的好處 確保了某段關鍵 只能由乙個執行緒從頭到尾完整地執行 鎖的壞處 某個執行緒要更改共享資料時,先將其鎖定,此時資源的狀態為 鎖定 其他執...