<form id="dlljd"></form>
        <address id="dlljd"><address id="dlljd"><listing id="dlljd"></listing></address></address>

        <em id="dlljd"><form id="dlljd"></form></em>

          <address id="dlljd"></address>
            <noframes id="dlljd">

              聯系我們 - 廣告服務 - 聯系電話:
              您的當前位置: > 關注 > > 正文

              今頭條!Linux下常見的鎖機制-自旋鎖 自旋鎖spinlock見解

              來源:CSDN 時間:2023-01-06 08:17:11

              Linux下常見的鎖機制


              【資料圖】

              Linux下常見的鎖機制主要有:spinlock(自旋鎖)、mutex(互斥鎖)和semaphore(信號量)等;

              Windows下還有CRITICAL_SECTION(臨界區),臨界區機制的實現只能是單進程里,它的性能較高;

              多線程之spinlock(自旋鎖)

              因為準備要參加一個項目,需要了解tcmalloc的實現機制,無意中看到了使用自旋鎖機制,所以臨時記錄一下。

              自旋鎖是鎖機制中簡單易用的一種,它是一種忙等待鎖,一般適用于短時間內處理事件等待的輕量級加鎖。

              下面給出一個實例:

              int  status; spinlock_t     spinlock;

              int init_lock(void) {spin_lock_init(&spinlock); }

              int  add_status(struct  inode *inode, struct file *filp) {spin_lock(&spinlock); if( OpenCloseStatus ) {spin_unlock(&spinlock); return -EBUSY; } status++; spin_unlock(&spinlock); }

              int  sub_status(struct  inode *inode, struct file *filp) {spin_lock(&spinlock); status--; spin_unlock(&spinlock);

              }

              Spinlock的一些特點

              1. spinlock不會導致線線程上下文切換,即不會導致用戶態到內核態的切換;

              2. spinlock只能使用在內核態中,即內核代碼中;

              3. spinlock鎖之間的代碼盡量簡短,并且spinlock不能放在遞歸的函數中使用。

              責任編輯:

              標簽:

              相關推薦:

              精彩放送:

              新聞聚焦
              Top 中文字幕在线观看亚洲日韩