Threads and memory model for C++
http://www.hpl.hp.com/personal/Hans_Boehm/c++mm/
Memory Ordering for Atomic Operations in C++0x
http://www.developerfusion.com/article/138018/memory-ordering-for-atomic-operations-in-c0x/
On C++ Atomic Fences
http://cbloomrants.blogspot.se/2012/05/05-30-12-on-c-atomic-fences.html
http://cbloomrants.blogspot.se/2012/05/05-31-12-on-c-atomic-fences-part-2.html
http://cbloomrants.blogspot.se/2012/06/06-01-12-on-c-atomic-fences-part-3.html
Implementing Dekker's algorithm with Fences
http://www.justsoftwaresolutions.co.uk/threading/implementing_dekkers_algorithm_with_fences.html
Peterson's lock with C++0x atomics
http://www.justsoftwaresolutions.co.uk/threading/petersons_lock_with_C++0x_atomics.html
Memory Models and Synchronization
http://www.justsoftwaresolutions.co.uk/threading/memory_models_and_synchronization.html
WG21/N2176 Memory Model Rationales
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2176.html
WG14/N1411 Memory Model Rationale
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1411.htm
Threads and Shared Variables in C++11 and elsewhere
http://www.hpl.hp.com/personal/Hans_Boehm/misc_slides/sfacm-cleaned.pdf
http://www.sfbayacm.org/event/threads-and-shared-variables-c11-and-elsewhere
Acquire and Release Semantics
http://preshing.com/20120913/acquire-and-release-semantics/
The Happens-Before Relation
http://preshing.com/20130702/the-happens-before-relation/
The Synchronizes-With Relation
http://preshing.com/20130823/the-synchronizes-with-relation/
Acquire and Release Fences
http://preshing.com/20130922/acquire-and-release-fences/
Acquire and Release Fences Don't Work the Way You'd Expect
http://preshing.com/20131125/acquire-and-release-fences-dont-work-the-way-youd-expect/
WG21/N2633 Improved support for bidirectional fences
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2633.html
WG21/N2731 Proposed Text for Bidirectional Fences
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2731.html
The Purpose of memory_order_consume in C++11
http://preshing.com/20140709/the-purpose-of-memory_order_consume-in-cpp11/
Fixing GCC's Implementation of memory_order_consume
http://preshing.com/20141124/fixing-gccs-implementation-of-memory_order_consume/
Outlawing ghosts: avoiding out-of-thin-air results
http://dl.acm.org/citation.cfm?id=2618134
解説記事
- http://d.hatena.ne.jp/bsdhouse/20090720/1248085754
- http://d.hatena.ne.jp/bsdhouse/20090816/1250446250
- http://d.hatena.ne.jp/bsdhouse/20090929/1254237835
- http://d.hatena.ne.jp/bsdhouse/20100128/1264693781
- http://d.hatena.ne.jp/bsdhouse/20110401/1301583600
- http://silight.hatenablog.jp/entry/2014/10/05/120356
- http://silight.hatenablog.jp/entry/2014/10/13/164915
- http://silight.hatenablog.jp/entry/2014/10/23/120618
- http://silight.hatenablog.jp/entry/2014/11/06/203737
StackOverflow
- http://stackoverflow.com/questions/7461484/memory-model-ordering-and-visibility
- http://stackoverflow.com/questions/2479067/why-is-the-volatile-qualifier-used-through-out-stdatomic
- http://stackoverflow.com/questions/4944771/stdatomic-compare-exchange-weak-vs-compare-exchange-strong
- http://stackoverflow.com/questions/19047327/why-gcc-does-not-use-loadwithout-fence-and-storesfence-for-stdmemory-order