複数のプロデューサと複数のコンシューマで共有されるキューリソースがあります。すべてが独立したプロセスです。キューの「所有」プロセスはありません。マルチプロセス同期 - セマフォより優れていますか?
実装の性質上、キューへのアクセスは制御されなければならず、特定の瞬間にプッシュまたはポップするプロセスを1つだけ許可する必要があります。
私はPOSIXという名前のセマフォを使って正しいソリューションになると考えましたが、詳細のいくつかが私を悩ませています。 (これはLinuxのみの実装で、btwです)
(いつか)私はsem_unlinkを行うべきですか?実際にキューを削除する理由はありますか?
キューセマフォをロックしたままでプロセスが死んでしまうのではないかと心配しています。これの周りに良い方法がありますか?私はロックを取得しようとすると、タイムアウト待ちをすることができますが、タイムアウトが切れると、私は現在競合状態に陥っています。
このような単純なバイナリロックには、より良い解決策がありますか?おそらく、fcntlや排他的なファイルを使用しているロックファイルですか?
これらはサービスベースのアプリケーションなので、ここでは私が使用した「KillNotes」はうまくいきませんでしたが、提案に感謝します。 – Joe
提案は実際にはファイルロックを使用することでした。このようなKillNotesのようなハウスキーピング・クルージュの必要性から、私はセンパホールの使用を恥ずかしがります。 – djna
申し訳ありませんが、私はあなたの意図を理解しました。 – Joe