pthread不一定能够保证线程安全性,特别是在开启编译器优化的情况下,某些编译器优化很可能破坏pthread的线程安全性。
由于不同的编译器可能有不同的优化技术,所以pthread的实现与编译器有很大的关系;即使是在同一个OS平台上,不同编译器对pthread的实现也可能不一致。
有专家写论文证明,C++的线程机制不能仅仅依靠一个库(例如pthread)来实现,而是必须在语言层面作出修改,否则很难真正写出正确的多线程程序。
最新的C++标准C++11,定义了C++语言的内存模型,解决了C++多线程实现的问题。
下面是一些链接,可供参考:
http://blog.csdn.net/pongba/article/details/1659952
http://hi.baidu.com/lkqye/item/253fc4f6abc6dbb531c19977
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.90.2412&rep=rep1&type=pdf