我在多计算机环境中工作,其中两台计算机将通过 32 位 PCI 总线访问相同的内存。
第一台计算机只会写入 32 位 int。
*int_pointer = number;
第二台计算机将仅从 32 位 int 读取。
number = *int_pointer;
两个操作系统 / CPU 都是 32 位架构。
带有 PCI 的计算机是基于 Intel 的。
PCI卡上的电脑是power PC。
我担心的情况是,如果只读计算机在读取变量的同时更改变量,导致读取计算机的数据无效。
我想知道读取/写入内存中相同位置的原子性是否保留在多台计算机上。
如果是这样,以下是否会阻止竞争条件:
number = *int_pointer;
while(*int_pointer != number) {
number = *int_pointer;
}
我可以保证每 16 毫秒 * 发生一次写入,而读取将随机发生。
*时间会漂移,因为两台计算机都有不同的计时器。