有很多原子是好的还是坏的?

时间:2016-01-25 11:44:46

标签: c++ c++11 atomic

此问题与我的previous有关。我做了一些测试,并发现拥有充满原子的数组比我之前使用互斥锁的方法快得多。但拥有数百万只它可以吗?也许有一些我根本不知道的东西?

1 个答案:

答案 0 :(得分:5)

原子内在存储没有什么特别之处。它的特别之处在于:

  1. 为访问数据而发出的指令,以确保不同的线程以正确的顺序查看内存更新,

  2. 不允许编译器(实际上是处理器)重新排序指令,以便在存储操作之前发生释放操作,而不是作者的意图(反之亦然)。

    < / LI>

    百万std::atomic<int> s不会消耗比代表它们所需的内存更多的资源。您的代码在访问它们时会发出大量的内存栅栏或获取/释放操作,但如果您也使用了互斥锁,那么因为互斥锁保护的代码块与观察到的更新顺序相同线程。