1

別のスレッドからの3つのコールバックイベントを(特定のコード行で)待機したいスレッドがあります。これらの3つのイベントを受け取って初めて、先に進みたいと思います。

セマフォを使おうとしています。セマフォはある時点でロックされる可能性があり、他のスレッドによって解放されるまで待機し続けることを認識しています。さて、セマフォを解放する前に、1つだけではなく、3つのコールバックを待ちたいということです。カウンターを用意することを考えましたが、別のカウンターを用意するだけでスレッドセーフになるかどうかはわかりません。では、スレッドセーフカウンターを備えたセマフォを作成する方法はありますか?

これはLinuxとWindowsの両方に当てはまります。

ありがとう。

4

1 に答える 1

1

スレッドに割り当て可能な番号を設定できる場合は、制御スレッドごとにブール変数を設定し、中断されたスレッドが解放される前にすべてが設定されているかどうかを確認できます。バイトの書き込みはおそらくアトミックです。

ただし、通常のセマフォにはアトミック カウンターがあります。

于 2013-03-04T06:16:54.300 に答える