Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Pembaca/Penulis Mengunci dalam C Mengoptimumkan Akses Serentak untuk Pembaca Kerap dan Penulis Jarang?
Pembaca/Penulis Mengunci dalam C : Penyelesaian Cekap untuk Pembaca Kerap dan Penulis Jarang
Dalam C , kunci pembaca/penulis adalah penting penyegerakan primitif direka untuk mengoptimumkan akses serentak kepada data yang dikongsi oleh berbilang rangkaian. Kes penggunaan yang sering mendapat manfaat daripada kunci pembaca/penulis ialah apabila terdapat seorang, penulis yang jarang dan ramai pembaca yang kerap. Artikel ini meneroka pendekatan standard C untuk melaksanakan kunci pembaca/penulis dan alternatif menggunakan Boost untuk versi pengkompil yang lebih lama.
Penyelesaian Standard C (C 14)
Yang diutamakan penyelesaian merentas platform dalam versi C moden (sejak C 14 dan VS2015) adalah untuk memanfaatkan perpustakaan standard
Boost Solution for Old Versions
Untuk versi dan standard pengkompil yang lebih lama, alternatif yang mantap ialah menggunakan perpustakaan Boost threading. Boost menyediakan jenis kunci berikut:
Contoh Penggunaan
Berikut ialah cara menggunakan kedua-dua C standard dan Boost penyelesaian:
Standard C (C 14):
#include <shared_mutex> typedef std::shared_mutex Lock; typedef std::unique_lock< Lock > WriteLock; typedef std::shared_lock< Lock > ReadLock; Lock myLock; void ReadFunction() { ReadLock r_lock(myLock); // Do reader stuff } void WriteFunction() { WriteLock w_lock(myLock); // Do writer stuff }
Boost:
#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; Lock myLock; void ReadFunction() { ReadLock r_lock(myLock); // Do reader stuff } void WriteFunction() { WriteLock w_lock(myLock); // Do writer stuff }
Dengan memilih penyelesaian yang sesuai berdasarkan platform dan versi C anda, anda boleh mengurus perkongsian dengan cekap sumber dan mengoptimumkan prestasi untuk aplikasi serentak anda di mana terdapat lebih ramai pembaca berbanding penulis.
Atas ialah kandungan terperinci Bagaimanakah Pembaca/Penulis Mengunci dalam C Mengoptimumkan Akses Serentak untuk Pembaca Kerap dan Penulis Jarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!