如果我使用一个共享变量,比如说一个双精度变量,来计算程序执行过程中的某种总和。无论如何,这是否容易受到不稳定操作的影响?我的意思是,是否有可能多个内核以异步方式访问此变量并导致不稳定的结果?
例如:这是一个全局变量:
double totalTime = 0;
并且在每个核心中调用一个命令:
totalTime += elapsedTime;
最后一个操作/语句通过获取 totalTime 的值执行,将其放入 CPU 寄存器,然后进行加法运算。我可以想象多个核心会在同一时刻采用相同的值,然后添加新的 elapsedTime,然后由于延迟,存储在 totalTime 中的值将被错误的值覆盖。那可能吗?我该如何解决这个问题?
谢谢你。