0

の説明を読むたびにsemget: The semget() system call returns the semaphore set identifier associated with the argument key.、本当に System V セマフォのセットがどこに必要なのか疑問に思います。

ほとんどの場合、単一のセマフォが必要なため、常にnsemsパラメーターを asに指定します。1バイナリ セマフォが必要ない場合でも、なぜ 5 ~ 6 個のセマフォのセットを作成するのでしょうか (たとえば)。

また、あるプロセスが 1 つのキーに関連付けられた 6 つのセマフォのセットを作成し、別のプロセスが同じキーに対して 3 つのセマフォのみを要求して semget を実行しようとした場合はどうなるでしょうか。また、6 つのセマフォすべてが 6 つの個別のバイナリ セマフォであるとは限りません。私はのどが渇いていて、この質問に対する答えを 2 か月間探しています (もちろん継続的ではありません)。

この質問が最もばかげているように思われる場合は申し訳ありませんが、セマフォのセットの実際の使用例を取得しない限り、この疑問は私の心に残ります。誰かがセマフォのセットを使用している C コードの例を検索しようとしましたが、見つかりませんでした。

あなたがこれについて私を助けることができれば、私はあなたたちに本当に本当に感謝しています. よろしくお願いします。

4

3 に答える 3

2

私は、共有メモリを介して連携し、同じデータで動作する一連の連携プロセスのそれぞれに 1 つのセマフォを使用する DBMS に取り組んでいます。一度に 1 つずつ割り当てなければならないのは面倒です。セマフォを 20 個 (または何でも) セットすると、非常に便利です。

于 2011-02-20T12:55:30.787 に答える
0

私が知っているセマフォの最も典型的な状況は、1 つ以上の処理スレッドによって処理されているデータのキューがある場合です。各スレッドは、キューからエントリが削除されるたびにセマフォを減らし、新しいデータがキューに入れられると、セマフォが増加します。その後、更新を常にポーリングするのではなく、セマフォで待機するだけで済みます。

于 2011-02-20T12:56:52.397 に答える