一.lock的使用
Posted duan2
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一.lock的使用相关的知识,希望对你有一定的参考价值。
使用ReentrantLock类
ReentrantLock类在扩展功能上更加强大,比如嗅探锁定,多路分支通知。而且在使用上也比synchronized更加灵活
调用ReentrantLock对象的lock()方法获取锁,调用unlock()方法释放 锁。
使用Condition实现等待/通知机制:错误用法与解决
注意调用condition.await()方法之前调用lock.lock()代码获得同步监视器
这个synchronized一样,调用wait()和notify()方法必须放入在同步锁内一个道理
正确使用Condition实现等待/通知
使用多个conditon实现通知部分线程:错误用法
使用多个condition实现通知部分线程:正确用法
使用ReentrantLock对象可以唤醒指定种类的线程,这是控制部分线程行为方式的便捷方式。
公平锁与非公平锁
非公平锁
方法getHoldCount()getQueueLength()和getWaitQueueLength()的测试
方法 int getHoldCount()的作用是查询当前线程保持锁定的个数,也就是调用lock()方法的次数
方法int getQueueLength()的作用是返回正等待获取此锁的线程估计数
方法int getWaitQueueLength(Condition condition)的作用是返回等待与此锁相关的给定条件Condition线程估计数
方法awaitUntil()的使用
等待一定的时间后自动唤醒
以上是关于一.lock的使用的主要内容,如果未能解决你的问题,请参考以下文章
使用std::lock 和 std::unique_lock来起先swap操作