免费注册 查看新帖 |

Chinaunix

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

为什么用户空间程序不用考虑内存屏障? [复制链接]

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
1 [报告]
发表于 2011-10-14 18:16 |显示全部楼层
回复 24# zylthinking


    这种程序员不够格写多线程程序吧

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
2 [报告]
发表于 2011-10-15 11:36 |显示全部楼层
本帖最后由 smalloc 于 2011-10-15 12:35 编辑

LZ不懂多线程编程,建议好好看看 POSIX多线程程序设计 这书。
另你这段程序有问题,没有判断malloc是否成功就设置了变量。从而造成了标志和分配内存的2个事务的不相关性。不相关或独立性才是乱序之根源。
你做一个判断再设置标志看看CPU还能乱序不?
可以这样理解。C语言在语句上单参考系的顺序模型。但处理器因为乱序却有可能改变这种序。但在数据相关性和逻辑相关性下还是保证序的。

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
3 [报告]
发表于 2011-10-16 17:39 |显示全部楼层
回复 44# asuka2001


    我也是这个意思。我只认为加上判断是解决A的数据依存问题,并没说能在B就获得标志和buf同步,确切的说在B接受的信息和A不是同一参考系。一个buf一个标志都从A传到B,谁先传到B本来就是不确切的,只有锁才会在各种条件下都保证一致。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP