我的问题是使用C++ 0x actomic <>类访问C++中的原子变量的速度有多快?什么在缓存级别下降.假设一个线程只是在读它,它是否需要转到RAM或它只能从它正在执行的核心的缓存中读取?假设架构是x86.
我特别感兴趣的是知道一个线程是否只是从它读取,而当时没有其他线程正在写入,惩罚将与读取正常变量相同.如何访问原子变量.每个读取隐含都涉及写入,比如在比较和交换中吗?原子变量是使用比较和交换实现的吗?
答案并不像您想象的那么简单。这取决于确切的 CPU 型号,也取决于具体情况。最坏的情况是当您需要对变量执行读取-修改-写入操作并且存在冲突时(冲突的具体内容又取决于 CPU 型号,但最常见的是当另一个 CPU 访问同一缓存行时) 。
| 归档时间: |
|
| 查看次数: |
1306 次 |
| 最近记录: |