我使用共享锁和独占锁,但我没有机会使用可升级的锁。如果需要从共享锁到独占锁,只需解锁共享锁并获得独占锁。那么在什么情况下我应该使用可升级的锁呢?
发布于 2015-06-20 12:54:27
如果需要升级,则会进行升级,而解锁不是一种选择。
考虑一个在读锁下读取某些信息的原子事务。当提交更新信息的时候到了,您不能在获得写锁之前放弃读锁,因为这意味着另一方可能已经改变了共享状态,使您的事务不再适用。
这是您升级锁的地方--这保证了在同一时间内不会有任何其他方获得写锁。
IOW:解锁产生控制。解决这一问题的另一种方法是,如果您/可能/希望稍后编写一些东西,则始终获取写锁。但这会导致过多的独占锁定,而这正是读者/写入器锁的目的所在。
https://stackoverflow.com/questions/30953460
复制相似问题