int i = 0;
if(i == 10) {...} // [1]
std::atomic<int> ai{0};
if(ai == 10) {...} // [2]
在多线程环境中,语句[1]是否比语句[2]快?假定在执行[2]时,ai
可能会或可能不会写入另一个线程。
Add-on:有什么方法可以使ai
的读取速度与i
一样快?前提是不需要整数的准确值。
[如果裸露的int
在目标体系结构上已经是原子的,那么,草率地说,std::atmoic<int>
只是int
。如果不是这样,atomic<int>
需要开销来同步访问,并且免费提供免费服务会影响性能。如果您想知道定量答案,则需要进行测量。