Apabila berurusan dengan struktur data dan objek yang diakses serentak oleh berbilang rangkaian, memastikan integriti dan konsistensi data adalah terpenting. Kunci pembaca/penulis menyediakan mekanisme yang berkesan untuk tujuan ini.
Dalam senario ini, anda ingin mengoptimumkan untuk kes penggunaan tertentu: seorang penulis yang jarang dan ramai pembaca yang kerap. Dengan memfokuskan pada corak ini, anda boleh meningkatkan prestasi dan kecekapan kod anda dengan ketara.
Bermula dengan C 14, perpustakaan standard menyediakan sokongan menyeluruh untuk kunci pembaca/penulis melalui
#include <shared_mutex> typedef std::shared_mutex Lock; typedef std::unique_lock<Lock> WriteLock; // C++11 typedef std::shared_lock<Lock> ReadLock; // C++14 Lock myLock; void ReadFunction() { ReadLock r_lock(myLock); // Do reader stuff } void WriteFunction() { WriteLock w_lock(myLock); // Do writer stuff }
Untuk versi C terdahulu, Boost menyediakan pelaksanaan alternatif kunci pembaca/penulis melalui rangsangan::thread::lock and boost::thread::shared_mutex headers:
#include <boost/thread/locks.hpp> #include <boost/thread/shared_mutex.hpp> typedef boost::shared_mutex Lock; typedef boost::unique_lock<Lock> WriteLock; typedef boost::shared_lock<Lock> ReadLock;
Menggunakan sama ada pendekatan C atau Boost standard, anda boleh melaksanakan kunci pembaca/penulis yang cekap yang disesuaikan dengan kes penggunaan khusus anda, memastikan prestasi optimum dan perlindungan data dalam aplikasi berbilang benang anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Kunci Pembaca/Penulis dalam C untuk Penulis Jarang dan Pembaca Kerap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!