您好,登錄后才能下訂單哦!
本篇內容主要講解“linux四種鎖機制分別是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“linux四種鎖機制分別是什么”吧!
互斥鎖 mutex 用于保證在任何時刻,都只能有一個線程訪問該對象。 當獲取鎖操作失敗時,線程會進入睡眠,等待鎖釋放時被喚醒。 讀寫鎖 rwlock 分為讀鎖和寫鎖。處于讀操作時,可以允許多個線程同時獲得讀操作。 但是同一時刻只能有一個線程可以獲得寫鎖。其它獲取寫鎖失敗的線程都會進入睡眠狀態,直到寫鎖釋放時被喚醒。 注意:寫鎖會阻塞其它讀寫鎖。當有一個線程獲得寫鎖在寫時,讀鎖也不能被其它線程獲取;寫者優先于讀者 自旋鎖 spinlock 在任何時刻同樣只能有一個線程訪問對象。但是當獲取鎖操作失敗時,不會進入睡眠,而是會在原地自旋,直到鎖被釋放。 這樣節省了線程從睡眠狀態到被喚醒期間的消耗,在加鎖時間短暫的環境下會極大的提高效率。 但如果加鎖時間過長,則會非常浪費CPU資源。 RCU 輕量讀寫鎖 read-copy-update 使用RCU時,讀者幾乎不需要同步開銷,既不需要獲得鎖,也不使用原子指令,不會導致鎖競爭,因此就不用考慮死鎖問題了。 而對于寫者的同步開銷較大,它需要復制被修改的數據,還必須使用鎖機制同步并行其它寫者的修改操作。 在有大量讀操作,少量寫操作的情況下效率非常高。 互斥鎖和讀寫鎖的區別: 1)讀寫鎖區分讀者和寫者,而互斥鎖不區分 2)互斥鎖同一時間只允許一個線程訪問該對象,無論讀寫; 讀寫鎖同一時間內只允許一個寫者,但是允許多個讀者同時讀對象。
到此,相信大家對“linux四種鎖機制分別是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。