是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
到相同的對象),則該訪問不會自動成爲線程安全的。