2015-06-20 41 views
1

我已经使用可共享的锁和独占锁,但我没有机会使用可升级的锁。如果需要从可共享锁到独占锁,只需解锁可共享锁并获得排他锁。那么在什么情况下我应该使用可升级的锁?我应该何时使用可升级的锁?

回答

1

如果您需要升级并且解锁不是一个选项,您可以升级。

考虑一个原子事务,它读取锁定下的一些信息。当提交更新信息的时候,你不能在获得写锁之前放弃读锁,因为这意味着另一方可能已经改变了共享状态,使得你的交易不适用了。

这是您升级锁定的地方 - 这保证了没有其他人会同时获得写入锁定。

IOW:解锁产量控制。解决这个问题的另一种方法是,如果您稍后可能/想要写某个东西,则总会获取写入锁定。但是这会导致过度的独占锁定,正是读者/写作者锁定打算阻止的。