Mutex Dikongsi dengan Boost
Dalam persekitaran berbilang benang, akses data perlu disegerakkan untuk mengelakkan akses serentak dan rasuah data. Boost menyediakan penyelesaian yang mudah untuk ini dengan boost::shared_mutex, membenarkan berbilang urutan membaca data secara serentak sambil menghalang penulisan semasa bacaan tersebut.
Ikhtisar Penggunaan
Untuk menggunakan boost ::shared_mutex, berbilang benang boleh memperoleh kunci baca (boost::shared_lock) untuk mengakses data tanpa menyekat pembaca lain. Apabila benang perlu menulis, ia boleh memperoleh kunci peningkatan (boost::upgrade_lock). Jika data sudah dikunci baca, kunci peningkatan boleh menunggu semua kunci baca dikeluarkan sebelum memperoleh akses eksklusif (boost::upgrade_to_unique_lock). Sebagai alternatif, kunci tulis tanpa syarat (boost::unique_lock) boleh diperoleh untuk menyekat semua urutan lain daripada mengakses data.
Contoh Kod
Kod berikut menunjukkan penggunaan boost::shared_mutex:
boost::shared_mutex _access; void reader() { boost::shared_lock<boost::shared_mutex> lock(_access); // Read data without blocking other readers } void conditional_writer() { boost::upgrade_lock<boost::shared_mutex> lock(_access); // Read data without exclusive access if (condition) { boost::upgrade_to_unique_lock<boost::shared_mutex> uniqueLock(lock); // Write data with exclusive access } // Continue reading without exclusive access } void unconditional_writer() { boost::unique_lock<boost::shared_mutex> lock(_access); // Write data with exclusive access }
Nota:
Atas ialah kandungan terperinci Bagaimanakah Boost::shared_mutex Mengendalikan Akses Baca dan Tulis Serentak dalam Persekitaran Berbilang Thread?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!