2

複数のスレッドを含むアプリケーションでセマフォを使用する必要があります。私の使用法は一般的なシナリオかもしれませんが、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.
}

これについて何か助けていただければ幸いです。

4

1 に答える 1