3

こんにちは私はカウンティングセマフォがどのように機能するかを理解しましたか?理解を助けてください。

私の理解によると、カウントを3に設定すると、プロセスは3つのスレッドを使用してリソースにアクセスできます。したがって、ここでは3つのスレッドだけがリソースにアクセスできます。1つのスレッドが離れると、もう1つの待機中のスレッドが入ります。私の理解が正しければ、これらの3つのスレッドも共有データを破損する可能性があります。それでは、それの使用は何ですか?

4

1 に答える 1

4

あなたの観察は正しいです。通常、リソースは1つのスレッドに制限する必要があるか(たとえば、書き込み中)、または無制限の数のスレッドで安全に使用できます(たとえば、読み取り専用です)。たとえば5つのスレッドで使用するリソースを制限しても、ほとんど役に立ちません。

したがって、カウントNのカウントセマフォは、 N個のリソースのプールへのアクセスを制限するために最もよく使用されます...カウントがゼロに達すると、次のスレッドはプールからリソースを取得するために待機する必要があります。

ただし、リソースのプールにアクセスするスレッドの数を制御するだけでは不十分であり、リソース自体も管理する必要があるため、これは実際にはあまり役に立ちません。そのため、通常、スレッドが取得できる管理対象リソースを含むブロッキングキューが作成されます。スレッドがリソースを処理すると、待機中のスレッドがそのリソースを取得できるように、そのリソース(オブジェクトなど)をキューに返します。

キューは内部でセマフォを使用して内部バッファへのアクセスを制御する場合がありますが、通常はキューのユーザーからカプセル化されます。

も参照してください

于 2012-02-11T18:19:49.173 に答える