c++ - 在 C++ 中访问原子变量的速度有多快

标签 c++ atomic c++11

我的问题是使用 C++0x actomic<> 类访问 C++ 中的原子变量有多快?在缓存级别发生了什么。假设一个线程正在读取它,它是否需要进入 RAM,或者它可以从它正在执行的核心的缓存中读取?假设架构是 x86。

我特别想知道一个线程是否只是从它读取,而当时没有其他线程正在写入,惩罚是否与读取普通变量相同。如何访问原子变量。是否每个读取隐式都涉及写入,就像在比较和交换中一样?原子变量是通过比较和交换实现的吗?

最佳答案

如果你想要原始数据,Anger Fog 的 data listings他的优化手册应该也有用,intels manuals有几个部分详细介绍了多核系统上内存读/写的延迟,其中应包括有关原子写入所需的总线锁定导致的减速的详细信息。

关于c++ - 在 C++ 中访问原子变量的速度有多快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7230733/

相关文章:

c++ - 前向声明?包括守卫?或其他什么?

c++ - 文件如何进入 Visual Studio C++ 中的外部依赖项?

c++ - 原子 decref 实现之间的区别

c++ - Boost.Locale 和 isprint

C++11:通用执行器

c# - 在 C# 中使用 C++ 组件对象模型

C++ 动态类型构造和检测

c++ - 原子变量是无锁的吗?

java - 顺序一致性和原子性有什么区别?

c++ - 将 vector<unique_ptr<Derived>> move 到 vector<unique_ptr<Base>>