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

时间:2015-06-20 11:29:40

标签: multithreading boost synchronization

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

1 个答案:

答案 0 :(得分:1)

如果您需要升级并且无法解锁,则需要升级。

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

这是升级锁定的地方 - 这保证了其他方不会同时获得写锁定。

IOW:解锁产生控制权。解决这个问题的另一种方法是,如果你/可能/想要稍后写一些东西,总是获得写锁。但是这会导致过多的独占锁定,而且正是读者/作者锁定意图阻止的。