C++11多线程内存模型
Information on the C++11 Memory Model @scottmeyers
http://www.cnblogs.com/scotth/p/4951385.html
写在前面
“C++11 feels like a new language” - Bjarne Stroustrup
的确,C++11核心已经发生了巨大的变化,它现在支持Lambda表达式、对象类型自动推断、统一初始化语法、Deleted和Defaulted函数、nullptr、委托构造函数、右值引用等等,本文主要讨论C++11对于多线程编程的支持。
一些例子
为何C++多线程编程需要对标准进行修订,基于多线程库如POSIX、boost.Thread的大量代码不是都工作得很好吗?详见《Threads Cannot be Implemented as a Library》,简单概括如下:
因为C++03标准是单线程的,所以即便是完全符合标准的编译器也可能各个脑袋里面只装着一个线程,于是在对代码作优化的时候总是一不小心就可能做出危害多线程正确性的优化来。