原子加法运算与多线程多变量(C中)

时间:2016-07-14 22:53:53

标签: c atomic

当考虑性能是唯一因素时,对于多线程上下文中的极快添加,使用GCC内置同步/原子操作添加到单个变量更好,还是更高性能添加到单个计数器每个帖子?

例如,如果我有8个线程,其中必须递增处理项的总数(以极高的速率),那么使用单个变量并使用原子操作从每个线程递增它是否更好?或者最好有8个单独的变量,每个线程一个,然后以某个间隔汇总8个变量的数据?

1 个答案:

答案 0 :(得分:3)

每个线程单独完成工作然后在最后聚合它的速度很快。 ADD指令是指令集中最简单的指令,运行速度非常快(约1个时钟周期)。锁定互斥锁或类似物的开销将大于实际计算。也许更重要的是,如果没有共享,计数器可以驻留在寄存器中而不是主内存中,这也明显更快。

一般情况下,除非必须,否则更快,更容易避免共享状态。