此问题与我的previous有关。我做了一些测试,并发现拥有充满原子的数组比我之前使用互斥锁的方法快得多。但拥有数百万只它可以吗?也许有一些我根本不知道的东西?
答案 0 :(得分:5)
原子内在存储没有什么特别之处。它的特别之处在于:
为访问数据而发出的指令,以确保不同的线程以正确的顺序查看内存更新,
不允许编译器(实际上是处理器)重新排序指令,以便在存储操作之前发生释放操作,而不是作者的意图(反之亦然)。
< / LI> 醇>百万std::atomic<int>
s不会消耗比代表它们所需的内存更多的资源。您的代码在访问它们时会发出大量的内存栅栏或获取/释放操作,但如果您也使用了互斥锁,那么因为互斥锁保护的代码块与观察到的更新顺序相同线程。