为什么要调用boost :: thread :: shared_mutex块的lock_upgrade()?

时间:2013-05-17 12:55:08

标签: c++ boost-thread

我正在学习 boost :: thread 的手册,他们说调用 shared_mutex lock_upgrade()的效果是 “当前线程阻塞,直到可以获取当前线程的升级所有权。”

但为什么要阻止,因为升级所有权它还不是独家所有权?

谢谢。

1 个答案:

答案 0 :(得分:2)

  

但为什么要阻止,因为升级所有权它还不是独家所有权?

如果某人已经拥有独家所有权,那么没有人可以获得共享或可升级的所有权;因此lock_sharedlock_upgrade都会在这种情况下阻止。

并且,如评论中所述,只有一个线程可以拥有可升级的所有权;所以如果有人已经拥有,lock_upgrade也会阻止。