免费注册 查看新帖 |

Chinaunix

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

对int变量的赋值是原子操作吗? [复制链接]

论坛徽章:
0
101 [报告]
发表于 2006-08-11 15:14 |只看该作者
发现克版主是个福将,上任以来,C版的贴子一改以往的低水准,又逐渐回升到一定的层次上来了...这样才能把大牛们圈回来嘛

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
102 [报告]
发表于 2006-08-11 15:16 |只看该作者
看看i386平台对atomic_t类型的定义吧.


typedef struct { volatile int counter; } atomic_t;

有volatile..

你们讨论的int counter有volatile吗??? 编译器不会为你们做那些事情的,把int都加上volatile...对不?

所以volatile int counter; 和int counter是两码事.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
103 [报告]
发表于 2006-08-11 15:16 |只看该作者
不要把int  和atomic_t混淆...

不要认为编译器会为你加上volatile

论坛徽章:
0
104 [报告]
发表于 2006-08-11 15:19 |只看该作者
原帖由 mq110 于 2006-8-11 15:16 发表
不要把int  和atomic_t混淆...

不要认为编译器会为你加上volatile

volatile 意思是不要对其进行优化,总是把变量放在内存里。

不然可能一个进程把变量优化在寄存器里,另一个进程再怎么死改这边也不会知道。这个跟前面讨论的问题没有多大联系。

volatile 不是要给它加锁的意思

[ 本帖最后由 isjfk 于 2006-8-11 15:23 编辑 ]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
105 [报告]
发表于 2006-08-11 15:23 |只看该作者
原帖由 isjfk 于 2006-8-11 15:19 发表

volatile 意思是不要对其进行优化,总是把变量放在内存里。

不然可能一个进程把变量优化在寄存器里,另一个进程再怎么死改这边也不会知道。这个跟前面讨论的问题没有多大联系。


这不就是在讨论 int 赋值原子性吗?? volatile 起到的就是不优化,自然也是为了保证原子性?
难道一直所说的int 赋值都是在寄存器里的??

论坛徽章:
0
106 [报告]
发表于 2006-08-11 15:24 |只看该作者
原帖由 mq110 于 2006-8-11 15:23 发表


这不就是在讨论 int 赋值原子性吗?? volatile 起到的就是不优化,自然也是为了保证原子性?
难道一直所说的int 赋值都是在寄存器里的??

放在寄存器里的话那就更简单了,一条指令解决战斗,什么原子性不原子性的就不用讨论了

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
107 [报告]
发表于 2006-08-11 15:25 |只看该作者
原帖由 isjfk 于 2006-8-11 15:24 发表

放在寄存器里的话那就更简单了,一条指令解决战斗,什么原子性不原子性的就不用讨论了



是啊,现在不就是讨论的这个吗??

我说错了??

论坛徽章:
0
108 [报告]
发表于 2006-08-11 15:27 |只看该作者
原帖由 mq110 于 2006-8-11 15:25 发表



是啊,现在不就是讨论的这个吗??

我说错了??

现在不是在讨论赋值编译成两条机器指令是不是原子的问题吗


乱了乱了......

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
109 [报告]
发表于 2006-08-11 15:31 |只看该作者
原帖由 isjfk 于 2006-8-11 15:27 发表

现在不是在讨论赋值编译成两条机器指令是不是原子的问题吗


乱了乱了......


哦,这样啊。 那还需要讨论吗 ???
都两条指令了.....

论坛徽章:
0
110 [报告]
发表于 2006-08-11 15:38 |只看该作者
前面说了,看帖去
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP