Rumah >pembangunan bahagian belakang >C++ >Adakah std::shared_ptr Thread-Safe Apabila Mengubah Suai Objek Dikongsi?
Memahami std::shared_ptr Keselamatan Benang
Dokumentasi merujuk kepada keselamatan benang blok kawalan, yang menguruskan pemilikan bersama objek. Berbilang urutan boleh mengakses objek shared_ptr yang berbeza secara serentak, kerana mereka berkongsi pemilikan sumber asas tanpa konflik. Walau bagaimanapun, ini tidak menjamin keselamatan mengubah suai objek kongsi itu sendiri.
Shared_ptr dan Pengubahsuaian Objek
Dalam contoh kod anda, urutan 1 mencipta salinan peribadi global menggunakan shared_ptr, manakala thread 2 mengubah suai global itu sendiri. Perkara berikut menerangkan tingkah laku:
Pertimbangan Keselamatan Benang
Untuk mengubah suai dengan selamat objek yang dikongsi oleh berbilang rangkaian, anda mesti menggunakan mekanisme penyegerakan seperti std::mutex. Contoh berikut menunjukkan kemas kini konfigurasi selamat benang menggunakan mutex:
// Shared pointer to the configuration object std::shared_ptr<Configuration> global_config = make_shared<Configuration>(); // Mutex to protect the configuration object std::mutex config_mutex; void thread_fcn() { // Lock the mutex before accessing the configuration std::lock_guard<std::mutex> lock(config_mutex); // Update the configuration from global_config // ... // Unlock the mutex after finishing the update }
Dengan memperoleh mutex sebelum mengubah suai global_config, anda menghalang sebarang gangguan daripada urutan lain. Ini memastikan konfigurasi sentiasa dikemas kini dengan cara yang konsisten dan selamat untuk rangkaian.
Atas ialah kandungan terperinci Adakah std::shared_ptr Thread-Safe Apabila Mengubah Suai Objek Dikongsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!