複数のプロデューサーと複数のコンシューマーで共有されるキュー リソースがあります。すべてが独立したプロセスです。キューを「所有」するプロセスはありません。
実装の性質上、キューへのアクセスを制御する必要があり、任意の時点でプッシュまたはポップできるプロセスは 1 つだけです。
セマフォという名前の POSIX を使用することが適切な解決策になると考えましたが、いくつかの詳細が気になります。(これは Linux のみの実装です。)
sem_unlink を実行する必要があるのはいつですか? 実際にキューを削除する理由はありますか?
キュー セマフォをロックしたままプロセスが停止することが心配です。これを回避する良い方法はありますか?ロックを取得しようとするときに一定時間待機することはできますが、タイムアウトになると競合状態になります。
このような単純なバイナリ ロックのより良い解決策はありますか? おそらく、fcntl および/または排他的オープンを使用したロックファイルでしょうか?