内存模型之参考文献


前两篇文章,希望大家多多带着怀疑的态度来读,很有可能有错误。:)

如果想进一步了解,可以看如下文献:

1. Shared Memory Consistency Models: A Tutorial
http://www.cs.utexas.edu/users/dburger/teaching/cs382m-f06/papers/16paper.pdf
Sarita Advey和Kourosh Gharachorloo对内存一致性模型做了非常好的综述,好读懂


2. Threads Cannot be Implemented as a Library
http://www.hpl.hp.com/techreports/2004/HPL-2004-209.pdf
Boehm一篇非常著名的paper,说明了为什么现在pthread不能保证线程安全:编译器和CPU的优化会使线程同步出现错误,好读懂

3. C++ and the Perils of Double-Checked Locking
http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf
Scott Meyers和Andrei Alexandrescu说明了为什么C++里double checked locking会出问题,还说明了为啥现阶段的volatile不管用,好读懂

4. Foundations of the C++ Concurrency Memory Model
http://www.hpl.hp.com/techreports/2008/HPL-2008-56.pdf
Boehm和Sarita Adve一篇关于C++0x的memory model的非常重要的paper,写的非常晦涩,但是只要把它的结论看明白就可以了,可以忽略证明

5. C++ 0x standard draft
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2798.pdf
传说中的标准,形式化的描述了c++0x的memory model
重点关注这两章:
    1.10 Multi-threaded executions and data races
    29   Atomic operations library
写的非常形式化,比较晦涩

6. The Java Memory Model
http://www.cs.umd.edu/~pugh/java/memoryModel/
写的非常形式化,比较晦涩

7. The CLR(dotnet) memory Model (Standard ECMA-335)
http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-335.pdf
主要关注12.6节,讲述CLR(dotnet)的memory model,用的大白话,我很喜欢:)

8. Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 3A: System Programming Guide, Part 1
http://download.intel.com/design/processor/manuals/253668.pdf
主要关注7.2节,讲述了x86会进行哪些reorder的优化,怎么阻止这些reorder

9. The JSR-133 Cookbook for Compiler Writers
http://g.oswego.edu/dl/jmm/cookbook.html
Doug Lea简述了compiler/runtime应该如何实现Java Memory Model,比如什么时候应该插入barrier
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值