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