linux執行緒同步方式是什麼?常見的有哪些?
Linux系統中,實現執行緒同步的方式大致分為六種,其中包括:互斥鎖、自旋鎖、訊號量、條件變數、讀寫鎖、屏障。其中最常用的執行緒同步方式就是互斥鎖、自旋鎖、訊號量,本文為大家重點講解一下。
1、互斥鎖
互斥鎖本質就是一個特殊的全域性變數,擁有lock和unlock兩種狀態,unlock的互斥鎖可以由某個執行緒獲得,當互斥鎖由某個執行緒持有後,這個互斥鎖會鎖上變成lock狀態,此後只有該執行緒有權力開啟該鎖,其他想要獲得該互斥鎖的執行緒都會阻塞,直到互斥鎖被解鎖。
互斥鎖的型別:
①普通鎖:互斥鎖預設型別。當一個執行緒對一個普通鎖加鎖以後,其餘請求該鎖的執行緒將形成一個等待佇列,並在鎖解鎖後按照優先順序獲得它,這種鎖型別保證了資源分配的公平性。一個執行緒如果對一個已經加鎖的普通鎖再次加鎖,將引發死鎖;對一個已經被其他執行緒加鎖的普通鎖解鎖,或者對一個已經解鎖的普通鎖再次解鎖,將導致不可預期的後果。
②檢錯鎖:一個執行緒如果對一個已經加鎖的檢錯鎖再次加鎖,則加鎖操作返回EDEADLK;對一個已經被其他執行緒加鎖的檢錯鎖解鎖或者對一個已經解鎖的檢錯鎖再次解鎖,則解鎖操作返回EPERM。
③巢狀鎖:該鎖允許一個執行緒在釋放鎖之前多次對它加鎖而不發生死鎖;其他執行緒要獲得這個鎖,則當前鎖的擁有者必須執行多次解鎖操作;對一個已經被其他執行緒加鎖的巢狀鎖解鎖,或者對一個已經解鎖的巢狀鎖再次解鎖,則解鎖操作返回EPERM。
④預設鎖:一個執行緒如果對一個已經解鎖的預設鎖再次加鎖,或者對一個已經被其他執行緒加鎖的預設鎖解鎖,或者對一個解鎖的預設鎖解鎖,將導致不可預期的後果;這種鎖實現的時候可能被對映成上述三種鎖之一。
2、自旋鎖
自旋鎖顧名思義就是一個死迴圈,不停的輪詢,當一個執行緒未獲得自旋鎖時,不會像互斥鎖一樣進入阻塞休眠狀態,而是不停的輪詢獲取鎖,如果自旋鎖能夠很快被釋放,那麼效能就會很高,如果自旋鎖長時間不能夠被釋放,甚至裡面還有大量的IO阻塞,就會導致其他獲取鎖的執行緒一直空輪詢,導致CPU使用率達到100%,特別CPU時間。
3、訊號量
訊號量是一個計數器,用於控制訪問有限共享資源的執行緒數。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2917968/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 什麼是程式(執行緒)同步執行緒
- 【網路安全】木馬啟動方式是什麼?常見的有哪些?
- 什麼是魚叉式網路釣魚?常見的方式有哪些?
- Linux驅動子系統是什麼?常見有哪些?Linux
- 理解常見的執行緒同步設施執行緒
- 什麼是多執行緒?Python多執行緒有什麼優勢?執行緒Python
- 程式執行緒新解:什麼是程式?什麼是執行緒?執行緒
- 常見越權方式有哪些?
- Linux常見目錄都有哪些?其用途是什麼?Linux
- 什麼是撞庫?撞庫攻擊常見的方法有哪些?
- NPTL 執行緒同步方式執行緒
- 執行緒同步的一些常見模式(1) (轉)執行緒模式
- 什麼是網路安全威脅?常見威脅有哪些?
- 執行緒與程式之間有什麼關係?Linux執行緒與程式有什麼區別?執行緒Linux
- openharmony 多執行緒的方式有哪些?兩個worker執行緒資料如何通訊、記憶體如何共享、與Java多執行緒有什麼區別?執行緒記憶體Java
- Python多執行緒是什麼意思?有什麼優勢?Python執行緒
- Pycharm有什麼優勢?常見快捷鍵有哪些?PyCharm
- 多執行緒-多執行緒常見的面試題執行緒面試題
- 【多執行緒與高併發】Java守護執行緒是什麼?什麼是Java的守護執行緒?執行緒Java
- 常見網路攻擊手段有哪些?防禦方法是什麼?
- Linux發行版本常見的有哪些?Linux運維Linux運維
- 什麼是網路攻擊?常見的網路攻擊手段有哪些?
- Linux是什麼?Linux有哪些版本?Linux
- 什麼是執行緒安全和執行緒不安全執行緒
- 在共享記憶體中進行執行緒間的同步是確保多執行緒程式正確執行的關鍵,以下是幾種常見的方法記憶體執行緒
- 執行緒池以及四種常見執行緒池執行緒
- 常見的四種執行緒池執行緒
- 常見的資料分析思維方式有哪些
- 什麼是Python網路爬蟲?常見的網路爬蟲有哪些?Python爬蟲
- 【知識分享】什麼是伺服器作業系統有哪些常見的伺服器作業系統
- 單執行緒的 Javascript 為什麼可以非同步執行緒JavaScript非同步
- JDK21的虛擬執行緒是什麼?和平臺執行緒什麼關係?JDK執行緒
- 4、Linux多執行緒,執行緒同步(2)Linux執行緒
- C++ 執行緒同步的四種方式C++執行緒
- 什麼是超執行緒技術?執行緒
- 什麼是Python執行緒?Python執行緒如何建立?Python執行緒
- 多執行緒面試題之多執行緒有幾種實現方案,分別是什麼執行緒面試題
- 什麼是shell?Linux常用的shell有哪些?Linux