我正在学习 boost :: thread 的手册,他们说调用 shared_mutex 的 lock_upgrade()的效果是 “当前线程阻塞,直到可以获取当前线程的升级所有权。”。
但为什么要阻止,因为升级所有权它还不是独家所有权?
谢谢。
答案 0 :(得分:2)
但为什么要阻止,因为升级所有权它还不是独家所有权?
如果某人已经拥有独家所有权,那么没有人可以获得共享或可升级的所有权;因此lock_shared
和lock_upgrade
都会在这种情况下阻止。
并且,如评论中所述,只有一个线程可以拥有可升级的所有权;所以如果有人已经拥有,lock_upgrade
也会阻止。