免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 5446 | 回复: 28
打印 上一主题 下一主题

[C] 百度的测试题 - 最后一题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-11 10:06 |只看该作者 |倒序浏览
本帖最后由 newroot_phy 于 2014-07-11 10:07 编辑



百度的测试题,最后一个,不太明白题意.

论坛徽章:
4
白羊座
日期:2013-09-17 21:59:30技术图书徽章
日期:2013-10-12 22:16:03白羊座
日期:2013-10-14 11:01:40双子座
日期:2013-12-17 18:26:39
2 [报告]
发表于 2014-07-11 10:15 |只看该作者
B和C(帖子长度不足)

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:032015年亚洲杯之中国
日期:2015-04-22 15:52:45
3 [报告]
发表于 2014-07-11 10:21 |只看该作者
你鄙视一下面试官, 说这题出得有问题.
1. 有没有讲是什么架构? X86?还是啥别的玩意?
2. x变量在哪里定义的, 有没有指明对齐颗粒神马的?
3. 单核还是多核? 汇编用的啥, 把++编译成INC还是MOV? 赋值编译成啥汇编了?

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:032015年亚洲杯之中国
日期:2015-04-22 15:52:45
4 [报告]
发表于 2014-07-11 10:23 |只看该作者
要是回答不上来, 你就告诉他, 都得同步.
然后说, 其实不用这么麻烦的, 你用个嵌入汇编, 加个lock前缀, 效率比你用临界区神马要高效得多的.

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
5 [报告]
发表于 2014-07-11 10:40 |只看该作者
b和c,包括读写两个操作

论坛徽章:
1
射手座
日期:2014-08-04 16:49:43
6 [报告]
发表于 2014-07-11 11:19 |只看该作者
为什么我觉得ABCD 都需要做同步呢,,,可能是老衲太业余了吧,老衲一向认为 不论是如何操作 单反多线程中有对公用变量的写操作 一定需要做同步操作的,
不论是赋值还是自增减,     求教了大神解疑...

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
7 [报告]
发表于 2014-07-11 11:25 |只看该作者
x=1和x=y还需要同步?无论怎么并发,都不影响结果
回复 6# hanzhenlll


   

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
8 [报告]
发表于 2014-07-11 11:33 |只看该作者
例如x=1
在汇编中分为二步,
1.将寄存器设置为1
2.将寄存器写到x对应的内存中
你说在这两步中无论多少个进程在两行代码中怎么并发,会影响到x=1这个结果吗?如果影响到,则需要同步,如果不影响,则不需要同步

x++则不同
在汇编共分三步
1.将x从内存读到寄存器
2.对寄存器+1
3.写回到x对应的内存中
假如现在有两个进程,x的初值为1 进程a执行汇编第二步的时候,进程b正好执行到汇编的第一步,这时候,当进程a走运行完这段代码的时候,x=2,当进程b运行完这段代码的时候,x=2,这时候就需要并发,因为x的结果依赖于两个进程执行这段代码的顺序

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
9 [报告]
发表于 2014-07-11 12:36 |只看该作者
x=y和x=1显然是需要屏障的,保证缓存的正确性,这叫不叫同步?

如果叫,那显然需要同步,如果不叫呢?

没说明机器架构,万一是个基于栈的机器,x=1被编译成了:
push 1
setvalue x
那怎么办呢?又没说机器架构。

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
10 [报告]
发表于 2014-07-11 12:36 来自手机 |只看该作者
lock前缀在多核的情况下整个系统的效率不如互斥锁高。有一本超经典的编程书上如是说。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP