其中主要说的是两个点,
1、shared_ptr中有两个数据成员,一个指针,指向了data,另外一个,是指向了引用计数。
2、一个shared_ptr复制需要两个步骤,一是复制data的指针,另外是将引用计数+1。这两个操作本身是原子的,但是这两个步骤不是原子的。
多线程的环境中,就会出现,第一个线程复制了data的指针,但是却没有来得及将引用计数+1就切换到了下一个线程的情况。
集体可以参看陈硕的博客,写得很清楚。
另外还讲到了将shared_ptr作为key的情况。
http://blog.csdn.net/solstice/article/details/8547547