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

Why should call lock_upgrade() of a boost::thread::shared_mutex block?

本文关键字:upgrade lock 块的 mutex boost thread shared 为什么 调用      更新时间:2023-10-16

我正在研究boost::thread的手册,他们说调用lock_upgrade()shared_mutex的效果是"当前线程阻塞,直到可以为当前线程获得升级所有权。".

但是为什么要阻塞,因为升级所有权还不是独占所有权?

谢谢。

但是为什么要阻塞,因为升级所有权还不是独占所有权?

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

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