1

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

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

谢谢你。

4

1 回答 1

2

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

如果某人已经拥有独占所有权,那么任何人都无法获得共享或可升级的所有权;所以在那种情况lock_sharedlock_upgrade都会阻塞。

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

于 2013-05-17T13:14:43.627 回答