Berapa Banyak Thread-Safety Adakah std::shared_ptr Berikan?
std::shared_ptr ialah penunjuk pintar yang menyediakan pengiraan rujukan dan automatik pengurusan ingatan. Walaupun ia memastikan platform pengiraan rujukan selamat benang secara bebas, beberapa aspek keselamatan benangnya memerlukan penjelasan.
Jaminan Keselamatan Benang Teras:
Had Keselamatan Benang:
Contoh Demonstrasi:
Pertimbangkan pseudo-kod berikut:
// Thread I shared_ptr<A> a (new A (1)); // Thread II shared_ptr<A> b (a); // Thread III shared_ptr<A> c (a); // Thread IV shared_ptr<A> d (a); d.reset (new A (10));
Adalah tidak betul untuk menganggap bahawa selepas memanggil reset() dalam Thread IV, thread lain akan melihat objek baharu sahaja. Thread II, III dan IV masih akan menghala ke objek asal dan hanya Thread IV akan menghala ke objek baharu.
Kesimpulan:
std::shared_ptr menyediakan jaminan keselamatan benang yang kukuh untuk pengiraan rujukan dan pemusnahan. Walau bagaimanapun, adalah penting untuk diingat bahawa keselamatan benang objek yang disimpan tidak dijamin dan mesti dipertimbangkan secara berasingan.
Atas ialah kandungan terperinci Adakah std::shared_ptr Benar-benar Selamat Benang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!