Dojo
最新
最佳
搜索
订阅
解道Jdon
领域驱动设计
架构设计
热点话题
产品经理
GitHub开源免费源代码
RUST语言
go语言文章排行榜
DevOps文章排行榜
数据科学
认知偏差与谬论
数据工程
幽默模因
更多话题
Java可扩展的读写锁 - puzpuzpuz
22-06-07
banq
锁或互斥体(互斥)是最基本的并发原语之一。很难找到一个无法解释互斥锁的开发人员,至少在基本层面上是这样。然而,互斥锁远不止这些。他们可能是:
操作系统级(想想,一个 pthread 互斥锁)或用户级(想想,一个自旋锁),
公开悲观(阻塞)或乐观(非阻塞)锁定 API,
提供锁获取的公平性或保持不公平,
支持可重入调用,或者更喜欢不可重入,
具有锁定不对称的概念(例如,使用可供读者使用的共享锁)或坚持对称的排他锁定,
严格要求在同一个线程上解锁(再次是 pthread 互斥锁),或者不想打扰解锁者的身份(sync.Mutex在 Golang 中),
支持锁定尝试的基于时间的取消或仅具有不可中止的调用。
今天,我们专注于大多数 Java 开发人员
熟悉
的非对称读写锁。这样的锁允许并发读者继续执行他们的临界区,而写者保证获得锁的独占所有权。这些锁用于绝大多数调用来自读取器并且写入器很少获取锁的场景。
我们的最终目标是提出一个锁实现,它可以根据 CPU 核心数线性扩展读取器操作,并将结果与
ReentrantReadWriteLock
标准库中的类等替代方案进行比较。
详细点击标题
猜你喜欢
本站原创
《复杂软件设计之道:领域驱动设计全面解析与实战》
其他人在看