一: 互斥體的概念
Lockable Concept
TimedLockable Concept
SharedLockable Concept
UpgradeLockable Concept
互斥體對(duì)象可以保護(hù)競(jìng)賽的數(shù)據(jù)和不同線程間的安全線程同步.線程可以調(diào)用互斥體的成員函數(shù)lock()來(lái)取得互斥體的所有權(quán),unlock()釋放所有權(quán).在Boost::thread中,互斥體可以遞歸使用,允許幾個(gè)線程同時(shí)擁有互斥體的所有權(quán).
Lockable
概念
void lock() //boost::thread_resource_error
if an error
occurs
bool try_lock()//boost::thread_resource_error
if an error
occurs.
void unlock()
Lockable的實(shí)現(xiàn)類必須提供以上函數(shù).通過(guò)調(diào)用lock()獲得所有權(quán),unlock()釋放所有權(quán).
TimedLockable
概念
bool timed_lock(boost::system_time const& abs_time)
template<typename DurationType> bool timed_lock(DurationType const& rel_time
//boost::thread_resource_error
if an error
occurs.
TimedLockable
概念精練于
Lockable
支持超時(shí)嘗試獲鎖,
TimedLockable
的實(shí)現(xiàn)類除了實(shí)現(xiàn)Lockable類的成員外,還要實(shí)現(xiàn)上面兩個(gè)函數(shù).
SharedLockable
概念
void lock_shared()
bool try_lock_shared()
bool timed_lock_shared(boost::system_time const& abs_time)
void unlock_shared()
SharedLockable
精練于TimedLockable,用于提供共享所有權(quán)
UpgradeLockable
概念
void lock_upgrade()
void unlock_upgrade()
void unlock_upgrade_and_lock()
void unlock_upgrade_and_lock_shared()
void unlock_and_lock_upgrade()
UpgradeLockable概念是一個(gè)完善SharedLockable概念,可以升級(jí)的所有權(quán),以及共同的所有權(quán)和獨(dú)自擁有。這是一個(gè)擴(kuò)大到多讀
者/單寫模式所提供的SharedLockable概念:一個(gè)單一的線程可能升級(jí)所有權(quán)的同時(shí),其他有共同的所有權(quán)。線程所有權(quán)可隨時(shí)升級(jí), 嘗試擁有獨(dú)家所有權(quán)。如果沒有其他線程有共同的所有權(quán),升級(jí)完成,立即和線程現(xiàn)在獨(dú)家擁有,它必須放棄要求解鎖()一樣,如果它被收購(gòu),呼吁鎖()
。
Class template lock_guard
lock_guard(Lockable & m)
lock_guard(Lockable & m,boost::adopt_lock_t)
~lock_guard()
posted on 2009-02-04 19:56
L'雙魚 閱讀(477)
評(píng)論(0) 編輯 收藏 引用