Untuk pengaturcaraan berbilang benang, adalah penting untuk memastikan penyegerakan yang betul. Kunci pembaca/penulis menyediakan penyelesaian untuk senario di mana data diakses secara serentak oleh berbilang pembaca dan seorang penulis. Mari kita terokai cara melaksanakan kunci pembaca/penulis dalam C .
Sejak C 14, perpustakaan standard menyediakan penyelesaian terbina dalam dengan std:: shared_mutex. Sintaksnya ialah:
#include <shared_mutex> typedef std::shared_mutex Lock; typedef std::unique_lock<Lock> WriteLock; typedef std::shared_lock<Lock> ReadLock;
Untuk menggunakan kunci ini:
Lock myLock; void ReadFunction() { ReadLock r_lock(myLock); // Perform read-only operations here } void WriteFunction() { WriteLock w_lock(myLock); // Perform write operations here }
Jika anda menggunakan versi C yang lebih lama atau tidak mempunyai akses kepada kemudahan perpustakaan standard, anda boleh menggunakan perpustakaan Boost untuk mencipta pembaca/penulis kunci:
#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;
Penggunaan adalah serupa dengan versi perpustakaan standard:
Lock myLock; void ReadFunction() { ReadLock r_lock(myLock); // Perform read-only operations here } void WriteFunction() { WriteLock w_lock(myLock); // Perform write operations here }
Dengan memahami dan melaksanakan kunci pembaca/penulis, anda boleh mengoptimumkan aplikasi berbilang benang untuk senario di mana corak capaian data terdiri daripada banyak pembaca serentak dan satu yang jarang penulis.
Atas ialah kandungan terperinci Bagaimanakah Kunci Pembaca/Penulis Boleh Mengoptimumkan Capaian Data Serentak dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!