1

boost::threadのマニュアルを調べているところ、shared_mutex のlock_upgrade ()を呼び出す効果は、「 現在のスレッドのアップグレード所有権を取得できるまで、現在のスレッドがブロックされる」とのことです。.

しかし、アップグレードの所有権はまだ排他的な所有権ではないため、なぜブロックする必要があるのでしょうか?

ありがとうございました。

4

1 に答える 1

2

しかし、アップグレードの所有権はまだ排他的な所有権ではないため、なぜブロックする必要があるのでしょうか?

誰かがすでに排他的な所有権を持っている場合、誰も共有またはアップグレード可能な所有権を取得できません。そのような状況lock_sharedlock_upgradeは両方ともブロックされます。

また、コメントに記載されているように、アップグレード可能な所有権を持つことができるスレッドは 1 つだけです。誰かがすでにそれlock_upgradeを持っている場合もブロックします。

于 2013-05-17T13:14:43.627 に答える