gpt4 book ai didi

c - 原子加法运算与多线程多变量对比(C 语言)

转载 作者:行者123 更新时间:2023-12-01 13:42:56 26 4
gpt4 key购买 nike

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

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

最佳答案

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

一般来说,除非迫不得已,否则避免共享状态会更快也更容易。

关于c - 原子加法运算与多线程多变量对比(C 语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38385465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com