C ++ 11 shared_ptr引用计数(递增/递减)线程安全/原子?
答案 0 :(得分:2)
如果你有两个线程,每个线程都有一个shared_ptr
到同一个对象,那么这些线程就是'涉及shared_ptr
的引用计数的操作将是原子的。例如,如果两个线程同时销毁它们的shared_ptr
并且不存在对该对象的其他引用,则其中一个线程将销毁该对象。
当然,通过shared_ptr
不会使对象本身的操作成为线程安全的。如果两个线程都访问相同的 shared_ptr
(而不是同一个对象的不同shared_ptr
),那么该访问将不会自动成为线程安全的。
答案 1 :(得分:1)
是的,它是线程安全的。引用计数(递增/递减)发生在const限定成员(例如复制结构的源)下,并且第17章的措辞有效地说“同时const访问应该是线程安全的”。