2012-02-07 14 views
6

私は、ユーザーからリクエストを受け取ることができるゲームサーバーを持っています。ユーザーは作品の配置を要求することができます。次に、placeメソッドは、いくつかの非同期のhttpwebrequests(タイムアウト付き)を生成して、配置が正しいかどうかを調べます。サーバーが配置要求を受け取ったときにロックされるロックが必要で、Webコールバックによってロックが解除されます。私はReaderWriterLockを使用しますが、同じスレッドにとどまる場合にのみ機能し、Web要求のコールバックは別のスレッドで発生します。私は使用すべき別のロックがありますか?スレッドをロックして別のスレッドにロック

答えて

9

a semaphoreを使用できます。ロックスレッドはパーミットを取得します。非同期スレッドは許可を解放します。セマフォーは個々のスレッドに束縛されていないので気にならない。

+0

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

4

Semaphoreを使用できます。マニュアルから引用。

Semaphoreクラスは、WaitOneまたはReleaseの呼び出しでスレッドIDを強制しません。

つまり、2つの異なるスレッドから取得/解放する際に問題はありません。