私はいくつかのコードを見直しており、使用されている手法に疑いを感じています。
Linux 環境では、複数の共有メモリ セグメントを接続する 2 つのプロセスがあります。最初のプロセスは、共有する新しいファイル セットを定期的にロードし、共有メモリ ID (shmid) を「マスター」共有メモリ セグメント内の場所に書き込みます。2 番目のプロセスは、この「マスター」の場所を継続的に読み取り、shmid を使用して他の共有セグメントを接続します。
マルチCPUホストでは、あるプロセスが他のプロセスによって書き込まれている間にメモリを読み取ろうとするとどうなるかは、実装に依存するようです。しかし、おそらくハードウェア レベルのバス ロックにより、ワイヤ上のビットの破損が防止されるでしょうか? 読み取りプロセスがすぐに変更される値を取得したかどうかは問題ではありません。読み取りが古い値でも新しい値でもない何かに破損した場合にのみ問題になります。これは特殊なケースです。32 ビットのみが読み書きされています。
シュマットのものをグーグルで検索しても、この分野で決定的なものにはなりませんでした。
私はそれが安全でも正気でもないことを強く疑っています.私が本当に欲しいのは、問題を詳細に説明する記事へのいくつかのポインタです.