Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

内存模型的一个问题 #7

Open
AthrunArthur opened this issue Dec 10, 2013 · 2 comments
Open

内存模型的一个问题 #7

AthrunArthur opened this issue Dec 10, 2013 · 2 comments

Comments

@AthrunArthur
Copy link

Hi, 我大概看了一下内存模型部分,整体来说写得不错,精神可佳,貌似你大多数部分是翻译的那本concurrency in action?有个地方貌似不太准确,请你参考。

例如,如果两个变量读写互不相关,编译器有可能将读操作提前(暂且称为预读prefetch 吧),或者尽可能延迟写操作,假设如下面的代码段:....

首先这里不能称为预读,这里编译器的优化其实是instruction reorder,是为了充分利用cpu的流水线结构,而将读写不相关的操作放到一起,这样cpu在等待一个数据从内存读过来(数千cpu周期)的时候,同时还能干别的,而不是干等着。预读是硬件的,和编译器没有太大关系。

其次,下面的这个例子。。。请问你是不是没有亲自编译看看?按照你写的这种reorder,结果都变了,这不可能的。。。

@RunCross
Copy link

Hi,我还没得贡献任何东西,目前只是看看已经写过的。


天 道 酬 勤
别人笑我太疯癫,我笑他人看不穿。
不见五陵豪杰墓,无花无酒锄作田。

------------------ 原始邮件 ------------------
发件人: "AthrunArthur";[email protected];
发送时间: 2013年12月10日(星期二) 上午9:39
收件人: "forhappy/A-Detailed-Cplusplus-Concurrency-Tutorial"[email protected];

主题: [A-Detailed-Cplusplus-Concurrency-Tutorial] 内存模型的一个问题 (#7)

Hi, 我大概看了一下内存模型部分,整体来说写得不错,精神可佳,貌似你大多数部分是翻译的那本concurrency in action?有个地方貌似不太准确,请你参考。

例如,如果两个变量读写互不相关,编译器有可能将读操作提前(暂且称为预读prefetch 吧),或者尽可能延迟写操作,假设如下面的代码段:....

首先这里不能称为预读,这里编译器的优化其实是instruction reorder,是为了充分利用cpu的流水线结构,而将读写不相关的操作放到一起,这样cpu在等待一个数据从内存读过来(数千cpu周期)的时候,同时还能干别的,而不是干等着。预读是硬件的,和编译器没有太大关系。

其次,下面的这个例子。。。请问你是不是没有亲自编译看看?按照你写的这种reorder,结果都变了,这不可能的。。。


Reply to this email directly or view it on GitHub.

@forhappy
Copy link
Owner

谢谢 @AthrunArthur 中肯的建议,这一部分确实有部分内容是来自C++ Concurrency In Action,比方说那副图片就是从书里面截下来的,其他的内容是自己以前积累的,在每章的末尾都写了参考的出处,比方内存模型这一章的参考资料:[https://github.com/forhappy/A-Detailed-Cplusplus-Concurrency-Tutorial/blob/master/zh/chapter8-Memory-Model/web-resources.md] ,自己最近在找工作加毕业设计开题,这上面的内容更新少了,等忙完了这一段时间再好好投入精力来写其他的内容,非常感谢 ;-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants