- 主题:Int变量赋值是不是原子操作?
比如:
int a, b;
a = 1; //这个是原子操作吗?
b = a; //这个是原子操作吗?
有人说不是,因为赋值语句经常会分成几行汇编来执行;
有人说是,因为管你几行汇编执行,最终把1赋给a这个操作是一条指令,不能打断的,状态是明确的。
--
FROM 107.182.188.*
如果排除这种硬件呢?比如32位机器,32位int,最终赋值只能一个语句吧
【 在 milksea 的大作中提到: 】
: 基本的一种场景:int有可能在硬件上是两个字,常量赋值也会按高低位被分成两个语句。
: 在某些硬件上,单条汇编语句也会分成两部完成,也不是原子的。
: 所以c++才加入了atomic标准库。
--
FROM 107.182.188.*
atomic原理是啥,是不是就是自动加了个锁之类的?这样是不是效率就低了
【 在 milksea 的大作中提到: 】
: 再研究这个没什么现实意义。你要写并发程序,那就直接用atomic库提供的接口,c或者c++都有,库不全哪怕内嵌汇编呢,反正是没有硬写c代码然后指望它正好没出错的道理。
--
FROM 107.182.188.*