執行緒同步互斥鎖和讀寫鎖的區別和各自適用場景

2021-06-27 01:29:03 字數 429 閱讀 3828

讀寫鎖特點:

1)多個讀者可以同時進行讀

2)寫者必須互斥(只允許乙個寫者寫,也不能讀者寫者同時進行)

3)寫者優先於讀者(一旦有寫者,則後續讀者必須等待,喚醒時優先考慮寫者)

互斥鎖特點:

一次只能乙個執行緒擁有互斥鎖,其他執行緒只有等待

自旋鎖:

一次只能有乙個程序進入臨界區,讀寫鎖是自旋鎖的乙個特例。

應用場景:

以佇列操作為例:

執行緒a對佇列負責將資料寫入佇列。須採取「互斥鎖」或「讀寫鎖的寫鎖」

執行緒b佇列負責從佇列讀出資料。須採取「互斥鎖」或「讀寫鎖的寫鎖」,讀佇列操作,不可採取「讀寫鎖的讀鎖」,因為從佇列讀出資料時,需要更改佇列本身的下標索引,如果多個執行緒同時操作該佇列的話,就會導致佇列下標索引混亂。

但是對佇列的查詢操作則最好採取「讀寫鎖的讀鎖」來提高效率。

同步 互斥鎖 讀寫鎖 區別

相交程序之間的關係主要有兩種,同步與互斥。所謂互斥,是指散步在不同程序之間的若干程式片斷,當某個程序執行其中乙個程式片段時,其它程序就不能執行它 們之中的任一程式片段,只能等到該程序執行完這個程式片段後才可以執行。所謂同步,是指散步在不同程序之間的若干程式片斷,它們的執行必須嚴格按照規定的 某種先後...

互斥鎖 讀寫鎖和自旋鎖的區別

讀寫鎖特點 讀寫鎖有三種狀態 讀加鎖狀態 寫加鎖狀態和不加鎖狀態 只有乙個執行緒可以占有寫狀態的鎖,但可以有多個執行緒同時占有讀狀態鎖,這也是它可以實現高併發的原因。當其處於寫狀態鎖下,任何想要嘗試獲得鎖的執行緒都會被阻塞,直到寫狀態鎖被釋放 如果是處於讀狀態鎖下,允許其它執行緒獲得它的讀狀態鎖,但...

互斥鎖和讀寫鎖

互斥鎖的型別 對資源的訪問是互斥的,即執行緒a對資源加鎖後,在a解鎖前,其他執行緒不能訪問這個加鎖的資源。互斥鎖的特點 多個執行緒訪問資源的時候是序列的 互斥鎖的使用步驟 建立乙個互斥鎖 pthread mutex t mutex 初始化這把鎖 pthread mutex init mutex,nu...