critical section:
用來實現「排他占有」。適用範圍是單一程序的各個執行緒之間。它是:
1、乙個區域性性物件,不是乙個核心物件。
2、快速而有效率。
3、不能夠同時有乙個以上的critical_section被等待。
4、無法偵測是否已被某個執行緒放棄。
mutex:
乙個核心物件,可以在不同的執行緒之間實現「排他性占有」,甚至即使那些執行緒分屬不同程序。它是:
1、乙個核心物件。
2、如果擁有mutex的那個執行緒結束,則會產生乙個「abandoned」錯誤資訊。
3、可是使用wait...()等待乙個mutext。
4、可以具名,因此可以被其他程序開啟。
5、只能被擁有它的那個執行緒釋放(released)。
semaphore :
被用來追蹤有限資源。它是:
1、乙個核心物件。
2、沒有擁有者。
3、可以具名,因此可以被其他程序開啟。
4、可以被任何乙個執行緒釋放(released)。
event:
1、乙個核心物件。
2、完全在程式掌控之下。
3、適用於設計新的同步物件。
4、「要求甦醒」的請求並不會被儲存起來,肯能會被遺失掉。
5、可以具名,因此可以被其他程序開啟。
對比幾個同步物件
critical section 用來實現 排他占有 適用範圍是單一程序的各個執行緒之間。它是 1 乙個區域性性物件,不是乙個核心物件。2 快速而有效率。3 不能夠同時有乙個以上的critical section被等待。4 無法偵測是否已被某個執行緒放棄。mutex 乙個核心物件,可以在不同的執行緒...
幾個同步問題
計算機有許多與同步有關的問題。1.哲學家就餐問題 一種解法是某個時間內只有乙個人進餐。另外一種好一點的解法是在拿起筷子之前先測試兩邊的筷子是否空閒,空閒的話就可以吃,否則等待 阻塞 放下筷子之後,提醒旁邊餓的人可以吃了。這個解法需要乙個訊號量陣列,跟蹤哲學家當前的是否可進餐的狀態。另外它限制某乙個時...
AQS同步工具類對比
工具類 工具類作用 工具類加鎖方法 工具類釋放鎖方法 sync覆蓋的方法 sync非覆蓋的重要方法 state的作用 鎖型別鎖維護 semaphore 控制同時訪問某個特定資源的運算元量 acquire 每次請求乙個許可都會導致計數器減少1,一旦達到了0,新的許可請求執行緒將被掛起 release ...