是C++ 11 shared_ptr引用计数(增加/减少)线程安全/原子?是C++ 11 shared_ptr引用计数(增加/减少)线程安全/原子?
- 请分享有关C++ 11 shared_ptrs线程安全的见解。
- 是否有任何相关的问题和可能的数据竞赛。
- 它可以在异步编程中使用吗?
是C++ 11 shared_ptr引用计数(增加/减少)线程安全/原子?是C++ 11 shared_ptr引用计数(增加/减少)线程安全/原子?
是的,它是线程安全的。引用计数(增量/减量)发生在常量合格的成员(例如复制构造的来源)下,并且第17章的措辞有效地表明“同时const访问应该是线程安全的”。
如果您有两个线程,每个线程都有一个shared_ptr
指向同一对象,那么涉及shared_ptr
引用计数的那些线程操作将是原子操作。例如,如果两个线程同时销毁它们的shared_ptr
并且不存在其他对该对象的引用,则其中一个线程将销毁该对象。
当然,通过shared_ptr
不会对对象本身进行线程安全操作。如果两个线程都访问相同的shared_ptr
(而不是shared_ptr
到相同的对象),则该访问不会自动成为线程安全的。