共有メモリ IPC 同期 (ロックフリー)
質問:
開発者が求める循環バッファ内の共有データを使用する Intel x64 サーバー上の複数のプロセスが関与するシナリオにおける共有メモリ IPC の効果的な同期メカニズム。彼らは、メモリ バリアを活用して CPU 全体でのデータの可視性を保証し、シームレスな読み取り/書き込みアクセスを実現することを提案しています。しかし、GCC メモリ バリアは期待に応えられません。
答え:
Boost Interprocess の Single-Producer Single-Consumer (SPSC) キュー spsc_queue は、ロックフリーの共有メモリ IPC キューのソリューション。
実装:
タイプの定義:
カスタム タイプの定義共有メモリと文字列割り当ての管理:
コンシューマ:
プロデューサー:
使用例:
上記の実装を使用して、コンシューマーとプロデューサーの 2 つのプロセスを作成します。コンシューマは、プロデューサがメッセージをプッシュしている間、キューを監視します。リアルタイムまたはバースト モードでシームレスなプロセス間メッセージングを観察します。
利点:
以上が## GCC メモリ バリアが x64 上の共有メモリ IPC でデータの可視性を保証できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。