我什么时候应该使用可升级锁?

When should I use a upgradable lock?

我用过共享锁和排他锁,但是我没有机会使用升级锁。如果需要upgrade从共享锁到排他锁,只需要解锁共享锁,获得排他锁即可。那么升级锁应该在什么情况下使用呢?

如果你需要升级,你会升级,解锁不是一个选项。

考虑一个在读锁下读取一些信息的原子事务。当提交更新信息的时间到了,您不能在获取写锁之前放弃读锁,因为这意味着另一方可能以您的交易不适用的方式改变了共享状态没有了。

这是您升级锁的地方 - 它保证没有其他方同时获得写锁。

IOW:解锁产生控制。解决此问题的另一种方法是,如果您/可能/想要稍后写一些东西,则始终获取写锁。但这会导致过多的独占锁定,而这正是 reader/writer 锁旨在防止的。