宝杉的博客

UNIX/LINUX;ACE;SNMP;C++
posts - 33, comments - 23, trackbacks - 0, articles - 0

递归锁与非递归锁

Posted on 2007-08-03 13:03 宝杉 阅读(3584) 评论(2)  编辑 收藏 引用 所属分类: C++

   * 非递归锁:非递归锁提供互斥的一种高效的形式,它定义一个临界区,每一时刻只有单个线程可在其中执行。它们之所以是非递归的,是因为当前拥有锁的线程在将其释放前不可以再次获取它。否则,就会立即发生死锁。SunOS 5.x通过它的mutex_trwlock_t,和sema_t类型(POSIX Pthreads不提供后两种同步机制)为非递归锁提供支持。ASX构架提供MutexRW_Mutex,和Semaphore包装,以分别封装这些语义。

   * 递归锁:另外一方面,递归锁允许acquire方法嵌套调用,只要当前拥有该锁的线程就是试图重新获取它的线程。递归锁对于回调驱动的事件分派构架(比如1.3.2描述的反应堆)特别有用,在其中构架的事件循环执行对预登记的用户定义的对象的回调。因为随后用户定义的对象可能经由它的方法入口重入分派构架,必须使用递归锁以防止在回调过程中构架持有的锁发生死锁。

Feedback

# re: 递归锁与非递归锁  回复  更多评论   

2011-07-01 11:47 by 椒江在线
不错,这资料好少啊

# re: 递归锁与非递归锁  回复  更多评论   

2011-07-01 11:58 by 贝壳里的海
还是不怎么明白

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