2020-12-10:i++是原子操作吗?为什么?

2020-12-10:i++是原子操作吗?为什么?

#福大大架构师每日一题#
全部评论
不是,大概可以看成三步 1.读取,2.运算,3.赋值 类似于   int j = i ;   // mov 操作 j + 1 ;  // inc 自增 i = j ;       // mov 1.读取,读取就可能不原子,比如32位的电脑读取64位的long double,long和double的长度都是8个字节,32位处理器对其读写操作无法一次完成。 解决方式 用volatile修饰 2. 运算,运算虽然有可能涉及很多个时钟周期,但是是原子性的 3. 赋值 ,跟1 一样。 解决方法  1. 加互斥锁 (Lock)-- 安全,性能影响很大 2. CAS (Atomic 类) -- 很快,可能有ABA问题
4 回复 分享
发布于 2020-12-11 06:11
不是,i++是多条指令结合的,先读取,再加,最后放回内存
4 回复 分享
发布于 2020-12-10 13:48

相关推荐

11-04 19:05
已编辑
东莞城市学院 单片机
不知道怎么取名字_:你这个要实习两年?哪有这么久的,感觉就是即使你毕业了,但还按实习的话,是不是不用给你缴社保公积金啥的
点赞 评论 收藏
分享
评论
3
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务