我目前正在研究互斥鎖如何工作。我覺得我有一種抓地力。我的假設是否正確?這裏我們有兩個進程Pi和Pj,它們想要執行他們的關鍵部分,並且試圖解釋互斥鎖如何工作以防止競爭狀況的發生。互斥鎖如何工作?
裨嘗試獲取與獲取鎖()。在開始時,沒有進程正在執行其關鍵部分,因此可用將是真實的。在acquire的while循環中,條件將爲false,並且不會「忙等待」,並且可用將設置爲false。可用設置爲false的原因是爲了防止其他進程進入其關鍵部分。另一方面,Pj將不被允許執行其關鍵部分,因爲可用被Pi設置爲假。 !可用將是真實的,因此Pj將卡在「忙等待」中。
一旦Pi完成其關鍵部分,它調用release()。 release方法將可用的布爾變量重置爲true。一旦可用被設置爲true,Pj將停止在「忙等待」,因爲現在!availale會給出一個錯誤的值。 Pj將設置爲false並執行其關鍵部分。這個循環重複進行下一個過程,想要獲得鎖定來執行其臨界區域
謝謝您的反饋。 – asilvester635