複数のスレッドを含むアプリケーションでセマフォを使用する必要があります。私の使用法は一般的なシナリオかもしれませんが、m は API にこだわっています。
私の使用法では、セマフォは複数の場所から投稿できますが、セマフォを待機するスレッドは 1 つだけです。
ここで、セマフォがバイナリ 1 である必要があります。つまり、複数のスレッドがセマフォに同時に投稿した場合でも、セマフォ カウントが 1 のままで、エラーがスローされないようにする必要があります。どうすればこれを達成できますか。
要するに、次のコードが機能する必要があります。
private static Semaphore semaphoreResetMapView = new Semaphore(0, 1); // Limiting the max value of semaphore to 1.
void threadWait(){
while (true){
semaphoreResetMapView.WaitOne();
<code>
}
}
void Main(){
tThread = new Thread(threadWait);
tThread.Start();
semaphoreResetMapView.Release(1);
semaphoreResetMapView.Release(1);
semaphoreResetMapView.Release(1); // Multiple Releases should not throw an error. Rather saturate the value of semaphore to 1.
}
これについて何か助けていただければ幸いです。