如何理解互斥鎖、條件變量、讀寫(xiě)鎖以及自旋鎖?
時(shí)間:2021-10-28 15:36:33
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
[導(dǎo)讀]鎖是一個(gè)常見(jiàn)的同步概念,我們都聽(tīng)說(shuō)過(guò)加鎖(lock)或者解鎖(unlock),當(dāng)然學(xué)術(shù)一點(diǎn)的說(shuō)法是獲?。╝cquire)和釋放(release)。恰好pthread包含這幾種鎖的API,而C11只包含其中的部分。接下來(lái)我主要通過(guò)pthread的API來(lái)展開(kāi)本文。mutex(互斥量...
鎖是一個(gè)常見(jiàn)的同步概念,我們都聽(tīng)說(shuō)過(guò)加鎖(lock)或者解鎖(unlock),當(dāng)然學(xué)術(shù)一點(diǎn)的說(shuō)法是獲?。╝cquire)和釋放(release)。恰好pthread包含這幾種鎖的API,而C 11只包含其中的部分。接下來(lái)我主要通過(guò)pthread的API來(lái)展開(kāi)本文。
mutex(互斥量)
mutex(mutual exclusive)即互斥量(互斥體)。也便是常說(shuō)的互斥鎖。盡管名稱(chēng)不含lock,但是稱(chēng)之為鎖,也是沒(méi)有太大問(wèn)題的。mutex無(wú)疑是最常見(jiàn)的多線(xiàn)程同步方式。其思想簡(jiǎn)單粗暴,多線(xiàn)程共享一個(gè)互斥量,然后線(xiàn)程之間去競(jìng)爭(zhēng)。得到鎖的線(xiàn)程可以進(jìn)入臨界區(qū)執(zhí)行代碼。//?聲明一個(gè)互斥量
pthread_mutex_t?mtx;
//?初始化
pthread_mutex_init(