Redian新闻
>
递交485后 公司内部换组
avatar
递交485后 公司内部换组# EB23 - 劳工卡
c*p
1
太难了。。。有啥好资料么?学了好多次也没学会,囧阿。。。。
avatar
a*n
2
问一下大家, 我485递交上去不到180天 公司内部换组 工作性质有大约40%-30%的变化
的话 请问 从规定上讲允许么
avatar
b*d
3
弄多个thread,同时读写同一个文件,做到数据不乱,你就成功了。再把各种
synchronization的方法都用上,看看各自的利弊,你就会有深刻的印象。
话说今天电面,俺也被把这个问题里里外外问了个遍。

【在 c********p 的大作中提到】
: 太难了。。。有啥好资料么?学了好多次也没学会,囧阿。。。。
avatar
a*g
4
同问
avatar
A*t
6
多线程去wiki看下什么意思就可以了,一般面试不会具体让你写多线程的程序的。
实际工作中用到,但是不多。

【在 c********p 的大作中提到】
: 太难了。。。有啥好资料么?学了好多次也没学会,囧阿。。。。
avatar
c*p
7
快分享分享!

【在 b**d 的大作中提到】
: 弄多个thread,同时读写同一个文件,做到数据不乱,你就成功了。再把各种
: synchronization的方法都用上,看看各自的利弊,你就会有深刻的印象。
: 话说今天电面,俺也被把这个问题里里外外问了个遍。

avatar
c*p
8
现在好像面试多线程的很多阿

【在 A*****t 的大作中提到】
: 多线程去wiki看下什么意思就可以了,一般面试不会具体让你写多线程的程序的。
: 实际工作中用到,但是不多。

avatar
c*p
9
挖,你真是大好人!
谢谢!

【在 d******8 的大作中提到】
: http://nps.missouri.edu/nps_wiki/index.php/ECE4270-7270_-_Compu
: 我去年TA的一门课,看Lab部分的slides和实验
: 有不懂的可以问我。。
: 涉及到的变成模型有pthread, OpenMP和CUDA
: 希望能帮助你

avatar
d*n
11
先从基本概念开始,什么是mutex,什么是semaphore,什么是spinlock,什么是
condition variable,什么是memory fence/memory barrier。什么是dead lock?什么
是live lock?什么情况下出现race?
让你写一个thread safe的写操作,你怎么做。
然后再往上,怎么实现thread safe的stack,queue?如何实现一个read/write lock?
如何实现一个atomic计数器?
再往上,例举一下memory model和编译器的影响...

【在 c********p 的大作中提到】
: 太难了。。。有啥好资料么?学了好多次也没学会,囧阿。。。。
avatar
t*t
12
太多了,太多了。
会reader, writer buffer,知道点deadlock就足够了。

【在 d****n 的大作中提到】
: 先从基本概念开始,什么是mutex,什么是semaphore,什么是spinlock,什么是
: condition variable,什么是memory fence/memory barrier。什么是dead lock?什么
: 是live lock?什么情况下出现race?
: 让你写一个thread safe的写操作,你怎么做。
: 然后再往上,怎么实现thread safe的stack,queue?如何实现一个read/write lock?
: 如何实现一个atomic计数器?
: 再往上,例举一下memory model和编译器的影响...

avatar
b*f
13
Mark
avatar
r*g
14
找个现成的单线程程序改,尽力优化。记得有谁说过学multi-thread五个阶段:第一阶
段发现多线程好用,于是到处都用;第二阶段发现需要lock,到处都synchronize;第
三阶段发现会死锁,会正确用lock;第四阶段进一步减少lock来加快速度;最高境界要
分析到cache,如何分配共享内存以减少隐蔽的false sharing。
要想写得非常好,有很长的路要走,比如多线程读数据,尽可能把数据放在一个内存
block,能够fit进cache line,这样读数据速度快;多线程写数据,则正好相反,最好
每个线程写自己的block,尽量分开不在同一个cache line。即使不是多线程写同一个
address,写同一个block也会造成隐含的false sharing lock,效率低很多。
avatar
l*3
15
mark, 感谢分享
avatar
b*d
16
这个得mark
感谢分享

【在 r**********g 的大作中提到】
: 找个现成的单线程程序改,尽力优化。记得有谁说过学multi-thread五个阶段:第一阶
: 段发现多线程好用,于是到处都用;第二阶段发现需要lock,到处都synchronize;第
: 三阶段发现会死锁,会正确用lock;第四阶段进一步减少lock来加快速度;最高境界要
: 分析到cache,如何分配共享内存以减少隐蔽的false sharing。
: 要想写得非常好,有很长的路要走,比如多线程读数据,尽可能把数据放在一个内存
: block,能够fit进cache line,这样读数据速度快;多线程写数据,则正好相反,最好
: 每个线程写自己的block,尽量分开不在同一个cache line。即使不是多线程写同一个
: address,写同一个block也会造成隐含的false sharing lock,效率低很多。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。