gpt4 book ai didi

c++ - 编译器和 CPU 重新排序

转载 作者:太空狗 更新时间:2023-10-29 21:29:15 26 4
gpt4 key购买 nike

我有以下情况。

volatile double val1 = 10.0;
volatile double val2 = 20.0;

double SetValues(double d1, double d2)
{
double ret = d1-d2;
InterlockedExchange64( (volatile long long*)&val1, *((long long*)&d1) ); // val1 = d1;
InterlockedExchange64( (volatile long long*)&val2, *((long long*)&d2) ); // val2 = d2;
return val1 - va2;
}

我的问题是,CPU 或编译器是否可能重新排序 SetValues() 函数的行?

最佳答案

编译器永远无法重新排序对外部库中函数的调用。如果您的编译器将这些函数实现为内在函数,它会足够聪明,不会对它们重新排序。

就 CPU 重新排序而言,the MSDN documentation说“这个函数生成一个完整的内存屏障(或栅栏)以确保内存操作按顺序完成。”

关于c++ - 编译器和 CPU 重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5248309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com