讀寫鎖特點:
1)多個讀者可以同時進行讀
2)寫者必須互斥(只允許乙個寫者寫,也不能讀者寫者同時進行)
3)寫者優先於讀者(一旦有寫者,則後續讀者必須等待,喚醒時優先考慮寫者)
互斥鎖特點:
一次只能乙個執行緒擁有互斥鎖,其他執行緒只有等待
自旋鎖:
一次只能有乙個程序進入臨界區,讀寫鎖是自旋鎖的乙個特例。
應用場景:
以佇列操作為例:
執行緒a對佇列負責將資料寫入佇列。須採取「互斥鎖」或「讀寫鎖的寫鎖」
執行緒b佇列負責從佇列讀出資料。須採取「互斥鎖」或「讀寫鎖的寫鎖」,讀佇列操作,不可採取「讀寫鎖的讀鎖」,因為從佇列讀出資料時,需要更改佇列本身的下標索引,如果多個執行緒同時操作該佇列的話,就會導致佇列下標索引混亂。
但是對佇列的查詢操作則最好採取「讀寫鎖的讀鎖」來提高效率。
同步 互斥鎖 讀寫鎖 區別
相交程序之間的關係主要有兩種,同步與互斥。所謂互斥,是指散步在不同程序之間的若干程式片斷,當某個程序執行其中乙個程式片段時,其它程序就不能執行它 們之中的任一程式片段,只能等到該程序執行完這個程式片段後才可以執行。所謂同步,是指散步在不同程序之間的若干程式片斷,它們的執行必須嚴格按照規定的 某種先後...
互斥鎖 讀寫鎖和自旋鎖的區別
讀寫鎖特點 讀寫鎖有三種狀態 讀加鎖狀態 寫加鎖狀態和不加鎖狀態 只有乙個執行緒可以占有寫狀態的鎖,但可以有多個執行緒同時占有讀狀態鎖,這也是它可以實現高併發的原因。當其處於寫狀態鎖下,任何想要嘗試獲得鎖的執行緒都會被阻塞,直到寫狀態鎖被釋放 如果是處於讀狀態鎖下,允許其它執行緒獲得它的讀狀態鎖,但...
互斥鎖和讀寫鎖
互斥鎖的型別 對資源的訪問是互斥的,即執行緒a對資源加鎖後,在a解鎖前,其他執行緒不能訪問這個加鎖的資源。互斥鎖的特點 多個執行緒訪問資源的時候是序列的 互斥鎖的使用步驟 建立乙個互斥鎖 pthread mutex t mutex 初始化這把鎖 pthread mutex init mutex,nu...