随笔-6  评论-2  文章-1  trackbacks-0
一: 互斥体的概念
 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)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理