私は POSIX セマフォと System V セマフォの違いを読んでいて、同じことに関するいくつかの記事を読みました。各記事には、次のように書かれています。
私の質問は次のとおりです。
1) 単一のアトミック操作で複数のインクリメント/デクリメントが必要なのは何ですか? 例を挙げて説明していただけますか?
2) semop で値を -1 未満および +1 より大きい値に変更できるのはなぜですか? 同じものの実用的な使用法/例はありますか?
(System V セマフォの semop() 関数を使用すると、セマフォ配列内の複数のセマフォに対して、指定された値だけセマフォを増減させることができます。 POSIX セマフォ. しかし、同じの使用は何ですか?)
参考までに読んだ記事:
1) http://www.ibm.com/developerworks/library/l-semaphore/
3) http://www.linuxdevcenter.com/pub/a/linux/2007/05/24/semaphores-in-linux.html?page=4
4) http://linuxtips.pbworks.com/w/page/29023300/SystemV%20vs%20Posix%20IPC
アップデート:
semop() を使用したセマフォの複数のインクリメント/デクリメントについて言及している以下の記事を読みましたが、同じ例/実際の使用法をまだ取得できません。参照用の記事:
1) http://kaharris.org/teaching/51081/Assignments/Final/systemV.pdf
記事からの抜粋: (「複数のセマフォ操作の例」というタイトルの下)
「System V セマフォの威力は、1 回の操作で複数のセマフォをアトミックにチェックおよび設定できることです。」
彼はそれを行う方法の小さなスニペットも提供しました。しかし、同じものの実際の使用法はありません。
2) http://www.anirudhtom.com/2011/02/system-v-semaphores-for-babies.html
著者は、「セマフォのセットの実装」というタイトルで、アトミック操作でセマフォの複数のインクリメント/デクリメントのコードを作成しました。同じものの実際の使用法は、ここでもまだ言及されていません。
本からの抜粋:
「UNIX System V では、セマフォ メカニズムがある程度の調整を行います。操作の原子性は維持されます。ただし、操作の加算値または減算値は 1 よりも大きくなる可能性があります。(なぜ? 何に使うのでしょうか?) さらに、プロセスは複数のセマフォを実行できます。複数のプロセスが多数の異なるリソースを同時に競合する場合のデッドロックの問題を回避するために、操作を同時に実行します。(どのように?例?)"
質問がより明確になることを願っています。
質問された内容に疑問がある場合はコメントしてください。
前もって感謝します!