互斥鎖mutex:一個(gè)線程獲得資源,其他線程睡眠。

自旋鎖spinlock:自旋鎖是一種特殊的互斥鎖,當(dāng)資源被枷鎖后,其他線程想要再次加鎖,此時(shí)該線程不會(huì)被阻塞睡眠而是陷入循環(huán)等待狀態(tài)(不能在做其它事情)。
這樣節(jié)省了線程從睡眠狀態(tài)到被喚醒期間的消耗,在加鎖時(shí)間短暫的環(huán)境下會(huì)極大的提高效率。但如果加鎖時(shí)間過(guò)長(zhǎng),則會(huì)非常浪費(fèi)CPU資源

遞歸鎖:一個(gè)線程可以多次獲得該資源鎖,其他線程得等多次鎖用完后才能獲得資源。

讀寫鎖rwlock:它擁有讀狀態(tài)加鎖、寫狀態(tài)加鎖。一個(gè)線程可以占有寫狀態(tài)的鎖,但可以有多個(gè)線程同時(shí)占有讀狀態(tài)鎖,這也是它可以實(shí)現(xiàn)高并發(fā)的原因。

RCU:即read-copy-update,在修改數(shù)據(jù)時(shí),首先需要讀取數(shù)據(jù),然后生成一個(gè)副本,對(duì)副本進(jìn)行修改。修改完成后,再將老數(shù)據(jù)update成新的數(shù)據(jù)。使用RCU時(shí),讀者幾乎不需要同步開銷,既不需要獲得鎖,也不使用原子指令,不會(huì)導(dǎo)致鎖競(jìng)爭(zhēng),因此就不用考慮死鎖問(wèn)題了。而對(duì)于寫者的同步開銷較大,它需要復(fù)制被修改的數(shù)據(jù),還必須使用鎖機(jī)制同步并行其它寫者的修改操作。在有大量讀操作,少量寫操作的情況下效率非常高

信號(hào)量:semaphore,是用于線程間同步的,當(dāng)一個(gè)線程完成操作后就通過(guò)信號(hào)量通知其它線程,然后別的線程就可以繼續(xù)進(jìn)行某些操作了。

信號(hào)量和互斥鎖的區(qū)別:semaphore

信號(hào)量是用于線程間同步的,而互斥鎖是用于線程的互斥的
互斥量的獲取和釋放都是在同一線程中完成的,pthread_mutex_lock(),pthread_mutex_unlock()。而信號(hào)量的獲得和釋放是在不同的線程的操作為sem_wait(),sempost();
互斥量的值只能為0和1,而信號(hào)量只要value>0,其它線程就可以sem_wait成功,成功后信號(hào)量value減一。若value值不大于0,則sem_wait阻塞,直到sem_post釋放后value加1。因此信號(hào)量的值可以為非負(fù)整數(shù)


本文來(lái)自 禾夕 的CSDN 博客 ,全文地址請(qǐng)點(diǎn)擊:https://blog.csdn.net/u012658346/article/details/51188116?utm_source=copy
https://blog.csdn.net/u012658346/article/details/51188116/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Q:為什么出現(xiàn)多線程? A:為了實(shí)現(xiàn)同時(shí)干多件事的需求(并發(fā)),同時(shí)進(jìn)行著下載和頁(yè)面UI刷新。對(duì)于處理器,為每個(gè)線...
    幸福相依閱讀 1,732評(píng)論 0 2
  • 線程同步(互斥鎖與信號(hào)量的作用與區(qū)別) “信號(hào)量用在多線程多任務(wù)同步的,一個(gè)線程完成了某一個(gè)動(dòng)作就通過(guò)信號(hào)量告訴別...
    勝浩_ae28閱讀 5,107評(píng)論 0 2
  • iOS線程安全的鎖與性能對(duì)比 一、鎖的基本使用方法 1.1、@synchronized 這是我們最熟悉的枷鎖方式,...
    Jacky_Yang閱讀 2,376評(píng)論 0 17
  • 0. 緣由# 經(jīng)常遇到下面一個(gè)場(chǎng)景——“浩哥,忙不?幫我看看這個(gè)保險(xiǎn)怎么樣?”,然后向我拋出了一份計(jì)劃書。這種情況...
    HackerFollower閱讀 402評(píng)論 0 0
  • 你問(wèn)他到底愛(ài)不愛(ài)你的時(shí)候,你心里其實(shí)知道的,他不愛(ài)你。 0. 有一句非常古老的話,“男追女,隔座山;女追男,隔層紗...
    施施小洛閱讀 902評(píng)論 1 0

友情鏈接更多精彩內(nèi)容