【Boost】boost库中thread多线程详解2——mutex与lock
生活随笔
收集整理的這篇文章主要介紹了
【Boost】boost库中thread多线程详解2——mutex与lock
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. mutex對(duì)象類
mutex類主要有兩種:獨(dú)占式與共享式的互斥量。▲ 獨(dú)占式互斥量:
mutex: 獨(dú)占式的互斥量,是最簡(jiǎn)單最常用的一種互斥量類型
try_mutex: 它是mutex的同義詞,為了與兼容以前的版本而提供
timed_mutex: 它也是獨(dú)占式的互斥量,但提供超時(shí)鎖定功能
▲ 遞歸式互斥量:
recursive_mutex: 遞歸式互斥量,可以多次鎖定,相應(yīng)地也要多次解鎖
recursive_try_mutex: 它是recursive_mutex 的同義詞,為了與兼容以前的版本而提供
recursive_timed_mutex: 它也是遞歸式互斥量,基本功能同recursive_mutex, 但提供超時(shí)鎖定功能
▲ 共享式互斥量:
shared_mutex: multiple-reader/single-writer 型的共享互斥量(又稱讀寫鎖)。
其中mutex有l(wèi)ock和unlock方法,shared_mutex除了提供lock和unlock方法外,還有shared_lock和shared_unlock方法。
2. lock模板類
▲ 獨(dú)占鎖:boost::unique_lock<T>,其中T可以mutex中的任意一種。
? 如果T為mutex,那么boost::unique_lock<boost::mutex>,構(gòu)造與析構(gòu)時(shí)則分別自動(dòng)調(diào)用lock和unlock方法。
? 如果T為shared_mutex,那么boost::unique_lock<boost::shared_mutex>,構(gòu)造與析構(gòu)時(shí)則分別調(diào)用shared_mutex的shared_lock和shared_unlock方法。
注意:scoped_lock也是獨(dú)占鎖,其源代碼中定義如下;
? typedef unique_lock<mutex> scoped_lock;
? typedef unique_lock<timed_mutex> scoped_timed_lock;
▲ 共享鎖:
boost::shared_lock<T>,其中的T只能是shared_mutex類。
當(dāng)然還有其他一些鎖:lock_guard,?upgrade_lock等。
3. 讀寫鎖的實(shí)現(xiàn)
[cpp]?view plaincopy print?4. boost::lock_guard<>和boost::unique_lock<>的區(qū)別
[cpp]?view plaincopy print?
5.?簡(jiǎn)單示例
[cpp]?view plaincopy print? 總結(jié)
以上是生活随笔為你收集整理的【Boost】boost库中thread多线程详解2——mutex与lock的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Boost】boost库中thread
- 下一篇: 【Boost】boost库中thread