与普通变量相比,仅读取原子变量是否有性能差异?

问题描述 投票:0回答:1
int i = 0;
if(i == 10)  {...}  // [1]

std::atomic<int> ai{0};
if(ai == 10) {...}  // [2]

在多线程环境中,语句[1]是否比语句[2]快?假定在执行[2]时,ai可能会或可能不会写入另一个线程。

Add-on:有什么方法可以使ai的读取速度与i一样快?前提是不需要整数的准确值。

c++ multithreading performance atomic stdatomic
1个回答
-1
投票

[如果裸露的int在目标体系结构上已经是原子的,那么,草率地说,std::atmoic<int>只是int。如果不是这样,atomic<int>需要开销来同步访问,并且免费提供免费服务会影响性能。如果您想知道定量答案,则需要进行测量。

© www.soinside.com 2019 - 2024. All rights reserved.