免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: hongdou999
打印 上一主题 下一主题

[C] b+=a;与b+=3;区别 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-07-08 19:09 |只看该作者
原帖由 haikun 于 2008-7-1 17:42 发表
什么叫原子操作?

所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。

  原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树的include/asm/atomic.h文件中,它们都使用汇编语言实现,因为C语言并不能实现这样的操作。

网上有很多想尽得解释,这是其中一个!
http://hi.baidu.com/hanframe_ip/ ... d4186685352498.html

论坛徽章:
0
12 [报告]
发表于 2008-07-08 19:14 |只看该作者
原帖由 ruoyisiyu 于 2008-7-1 11:55 发表
习惯用b+=3,尽可能较少中间量

这个不太好啊,谁知道3是什么意思啊?

编译器能做的优化就没有必要代劳了,代码的清晰是重要的。有的时候人不一定不编译器聪明。不涉及数据相关性的话,这两个代码优化出来应该是一样的。

论坛徽章:
0
13 [报告]
发表于 2008-07-08 19:18 |只看该作者
应该就是如前面各位所说,如果在不考虑并发得情况下,就是前一个3作为内存里变量存储,后一个3是一个立即数,之前我也想应该是这样!
谢谢各位,还用汇编代码做详尽得解释!

论坛徽章:
0
14 [报告]
发表于 2008-07-08 19:36 |只看该作者
还是 看汇编直观

论坛徽章:
0
15 [报告]
发表于 2008-07-08 19:37 |只看该作者
不懂的人飘过~~~

论坛徽章:
0
16 [报告]
发表于 2008-07-08 19:50 |只看该作者
就结果来说没有太大区别,就效率来说,立即数更快

论坛徽章:
0
17 [报告]
发表于 2008-07-08 22:08 |只看该作者
编译器不同,会做不同的优化吧?

论坛徽章:
0
18 [报告]
发表于 2008-07-10 03:54 |只看该作者
哎呀呀,什么原子操作,atom是原子,可是老师怎么说的?a-是词缀,表示不。tomos来自希腊文,分割的意思。连起来读一遍,不可分割!

论坛徽章:
0
19 [报告]
发表于 2008-07-10 09:29 |只看该作者
原帖由 langue 于 2008-7-10 03:54 发表
哎呀呀,什么原子操作,atom是原子,可是老师怎么说的?a-是词缀,表示不。tomos来自希腊文,分割的意思。连起来读一遍,不可分割!



原来如此! 理解更深刻了!

ls 语言真强!怪不得名字都是langue,呵呵^_^

论坛徽章:
0
20 [报告]
发表于 2008-07-11 17:45 |只看该作者
怎么看汇编啊 大牛啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP