shared_ptr 的线程安全级别和内建类型、标准库容器、std::string 一样,即:
• 一个 shared_ptr 对象实体可被多个线程同时读取;
• 两个 shared_ptr 对象实体可以被两个线程同时写入,“析构”算写操作;
• 如果要从多个线程读写同一个 shared_ptr 对象,那么需要加锁;
请注意,以上是 shared_ptr 对象本身的线程安全级别,不是它管理的对象的线程安全级别。
下面是网上一些比较好的文章分析:
http://blog.csdn.net/solstice/article/details/8547547 (这篇文章十分推荐,一定要看一下)
http://my.oschina.net/costaxu/blog/103119 (这篇也可以看一下,不过最后的例子我觉得不好)