私は、2 台のコンピューターが 32 ビット PCI バスを介して同じメモリにアクセスするマルチコンピューター環境で作業しています。
最初のコンピューターは 32 ビット int にのみ書き込みます。
*int_pointer = number;
2 番目のコンピューターは、32 ビット int からのみ読み取ります。
number = *int_pointer;
OS/CPUともに32bitアーキテクチャです。
PCI 搭載のコンピュータは Intel ベースです。
PCI カード上のコンピュータはパワー PC です。
私が心配しているケースは、読み取りコンピューターが変数を読み取ると同時に書き込み専用コンピューターが変数を変更し、読み取りコンピューターに無効なデータが発生する場合です。
メモリ内の同じ位置への読み取り/書き込みの原子性が複数のコンピューターで保持されているかどうかを知りたいです。
もしそうなら、以下は競合状態を防ぎます:
number = *int_pointer;
while(*int_pointer != number) {
number = *int_pointer;
}
書き込みは 16ms* ごとに行われ、読み取りはランダムに行われることを保証できます。
*両方のコンピューターのタイマーが異なるため、時間はずれます。