一: 互斥体的概念
Lockable Concept
TimedLockable Concept
SharedLockable Concept
UpgradeLockable Concept
互斥体对象可以保护竞赛的数据和不同线程间的安全线程同步.线程可以调用互斥体的成员函数lock()来取得互斥体的所有权,unlock()释放所有权.在Boost::thread中,互斥体可以递归使用,允许几个线程同时拥有互斥体的所有权.
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的实现类必须提供以上函数.通过调用lock()获得所有权,unlock()释放所有权.
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
支持超时尝试获锁,
TimedLockable
的实现类除了实现Lockable类的成员外,还要实现上面两个函数.
SharedLockable
概念
void lock_shared()
bool try_lock_shared()
bool timed_lock_shared(boost::system_time const& abs_time)
void unlock_shared()
SharedLockable
精练于TimedLockable,用于提供共享所有权
UpgradeLockable
概念
void lock_upgrade()
void unlock_upgrade()
void unlock_upgrade_and_lock()
void unlock_upgrade_and_lock_shared()
void unlock_and_lock_upgrade()
UpgradeLockable概念是一个完善SharedLockable概念,可以升级的所有权,以及共同的所有权和独自拥有。这是一个扩大到多读
者/单写模式所提供的SharedLockable概念:一个单一的线程可能升级所有权的同时,其他有共同的所有权。线程所有权可随时升级, 尝试拥有独家所有权。如果没有其他线程有共同的所有权,升级完成,立即和线程现在独家拥有,它必须放弃要求解锁()一样,如果它被收购,呼吁锁()
。
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'双鱼 阅读(470)
评论(0) 编辑 收藏 引用