我的问题是使用 C++0x actomic<> 类访问 C++ 中的原子变量有多快?在缓存级别发生了什么。假设一个线程正在读取它,它是否需要进入 RAM,或者它可以从它正在执行的核心的缓存中读取?假设架构是 x86。
我特别想知道一个线程是否只是从它读取,而当时没有其他线程正在写入,惩罚是否与读取普通变量相同。如何访问原子变量。是否每个读取隐式都涉及写入,就像在比较和交换中一样?原子变量是通过比较和交换实现的吗?
最佳答案
如果你想要原始数据,Anger Fog 的 data listings他的优化手册应该也有用,intels manuals有几个部分详细介绍了多核系统上内存读/写的延迟,其中应包括有关原子写入所需的总线锁定导致的减速的详细信息。
关于c++ - 在 C++ 中访问原子变量的速度有多快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7230733/