執行緒中的死鎖

Muten發表於2020-10-16

1.執行緒死鎖的情形

1.執行緒試圖對同一個互斥量A加鎖兩次(一般在編碼的時候會有誤操作);
2.執行緒1擁有A鎖,請求獲得B鎖;執行緒2擁有B鎖,請求獲得A鎖(兩把鎖和兩個共享資源)。

2. 執行緒死鎖問題的解決方法

針對情況1,需要細心一點,不可同時連續對一個資源加兩把鎖,加鎖之前要檢視是否解鎖完再去加鎖。
針對情況2,可以用try_lock進行一些處理,當拿不到所有的鎖的時候,就釋放已經佔用的鎖。

3.死鎖的簡單演示

 

相關文章