【发布时间】:2015-06-20 11:29:40
【问题描述】:
我用过共享锁和独占锁,但我没有机会使用升级锁。如果有需要upgrade从共享锁到排他锁,只要解锁共享锁,得到排他锁即可。那么在什么情况下应该使用可升级锁呢?
【问题讨论】:
标签: multithreading boost synchronization
我用过共享锁和独占锁,但我没有机会使用升级锁。如果有需要upgrade从共享锁到排他锁,只要解锁共享锁,得到排他锁即可。那么在什么情况下应该使用可升级锁呢?
【问题讨论】:
标签: multithreading boost synchronization
如果你需要升级,你会升级,解锁不是一种选择。
考虑一个在读锁下读取一些信息的原子事务。当提交更新信息的时候到了,你不能在获得写锁之前放弃读锁,因为这意味着另一方可能已经改变了共享状态,以至于你的事务不适用没有了。
这是您升级锁的地方 - 这可以保证同时没有其他方会获得写锁。
IOW:解锁产生控制权。解决此问题的另一种方法是,如果您/可能/以后想写一些东西,总是获取写锁。但这会导致过度的排他锁定,而这正是读写器锁定的目的。
【讨论】: