递归锁与非递归锁

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值