假设我有一个包含键值的字典,其中值是一个带锁的对象。每个进程都需要拿到锁才能修改具体的对象,但是字典中的key是稳定的。
现在,正如我之前所说,如果要为一个新对象添加一个新键(不经常),有没有办法在我将键添加到字典时使用锁来排除其他进程访问对象?
这样做的原因是,当它们不太可能对相同的对象进行操作时,我看不到使所有进程独占字典的意义,因此对象是唯一需要等待的对象。当我修改字典的完整性时,我想阻止每个进程访问它,但如果不是,我希望它们可以并行访问它。
原文由 unixsnob 发布,翻译遵循 CC BY-SA 4.0 许可协议
ReadWriteLock 的另一种实现,处理写入器饥饿问题,并支持将读锁提升为写锁(如果在构造期间请求)。它只使用一个锁和一个条件。