相关疑难解决方法(0)

num ++是'int num'的原子吗?

一般地,对于int num,num++(或++num),作为读-修改-写操作中,是不是原子.但我经常看到编译器,例如GCC,为它生成以下代码(在这里尝试):

在此输入图像描述

由于第5行对应于num++一条指令,我们可以得出结论,在这种情况下num++ 是原子的吗?

如果是这样,是否意味着如此生成num++可以在并发(多线程)场景中使用而没有任何数据争用的危险(例如,我们不需要制作它,std::atomic<int>并强加相关成本,因为它是无论如何原子)?

UPDATE

请注意,这个问题不是增量是否原子的(它不是,而且是问题的开头行).它是否可以在特定场景中,即在某些情况下是否可以利用单指令性质来避免lock前缀的开销.而且,作为公认的答案约单处理器的机器,还有部分提到这个答案,在其评论和其他人谈话解释,它可以(尽管不是C或C++).

c c++ assembly multithreading atomic

148
推荐指数
8
解决办法
1万
查看次数

LongAccumulator是如何实现的,因此效率更高?

据我所知,新的Java(8)引入了新的同步工具,如LongAccumulator(在原子包下).

在文档中,它说当多个线程的变量更新频繁时,LongAccumulator更有效.

我想知道它如何实现更高效?

java concurrency atomic java-8

12
推荐指数
1
解决办法
2801
查看次数

标签 统计

atomic ×2

assembly ×1

c ×1

c++ ×1

concurrency ×1

java ×1

java-8 ×1

multithreading ×1