reader_writer_lock Sınıfı
Yalnızca yerel olarak dönen yazıcı tercihi kuyruk tabanlı okuyucu yazıcı kilidi. Kilit, yazarlara ilk girişte (FIFO) erişim verir ve okuyucuları yazarların sürekli yükü altında açlıktan kurtarır.
Sözdizimi
class reader_writer_lock;
Üyeler
Genel Sınıflar
Veri Akışı Adı | Açıklama |
---|---|
reader_writer_lock::scoped_lock Sınıfı | Kilit nesnelerini yazıcı olarak almak reader_writer_lock için kullanılabilecek özel durum güvenli RAII sarmalayıcı. |
reader_writer_lock::scoped_lock_read Sınıfı | Kilit nesnelerini okuyucu olarak almak reader_writer_lock için kullanılabilecek özel durum güvenli RAII sarmalayıcı. |
Ortak Oluşturucular
Veri Akışı Adı | Açıklama |
---|---|
reader_writer_lock | Yeni reader_writer_lock bir nesne oluşturur. |
~reader_writer_lock Yıkıcı | Nesneyi yok eder reader_writer_lock . |
Genel Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
lock | Okuyucu-yazar kilidini yazar olarak alır. |
lock_read | Okuyucu yazıcı kilidini okuyucu olarak alır. Yazarlar varsa, etkin okuyucuların bitirene kadar beklemeleri gerekir. Okuyucu yalnızca kilide bir ilgi alanı kaydeder ve yazarların serbest bırakmasını bekler. |
try_lock | Okuyucu-yazar kilidini engellemeden yazar olarak almaya çalışır. |
try_lock_read | Okuyucu yazıcı kilidini engellemeden okuyucu olarak almaya çalışır. |
kilidi açmak | Okuyucu-yazar kilidini, kimlerin kilitlediğinden, okuyucudan veya yazardan alır. |
Açıklamalar
Daha fazla bilgi için bkz . Eşitleme Veri Yapıları.
Devralma Hiyerarşisi
reader_writer_lock
Gereksinimler
Üst bilgi: concrt.h
Ad alanı: eşzamanlılık
lock
Okuyucu-yazar kilidini yazar olarak alır.
void lock();
Açıklamalar
Bir nesneyi özel durum güvenli bir şekilde yazıcı olarak almak ve serbest bırakmak reader_writer_lock
için scoped_lock yapısını kullanmak genellikle daha güvenlidir.
Bir yazar kilidi almayı denedikten sonra, yazarlar kilidi başarıyla edinip serbest bırakıncaya kadar gelecekteki okuyucular engellenir. Bu kilit, yazarlara karşı taraflıdır ve yazarların sürekli yükü altında okuyucuları aç bırakabilir.
Yazarlar zincirlenir, böylece kilitteki bir yazar sıradaki yazıcıyı satırda serbest bırakır.
Kilit çağrı bağlamı tarafından zaten tutulursa, bir improper_lock özel durumu oluşturulur.
lock_read
Okuyucu yazıcı kilidini okuyucu olarak alır. Yazarlar varsa, etkin okuyucuların bitirene kadar beklemeleri gerekir. Okuyucu yalnızca kilide bir ilgi alanı kaydeder ve yazarların serbest bırakmasını bekler.
void lock_read();
Açıklamalar
Bir nesneyi özel durum güvenli bir şekilde okuyucu olarak almak ve serbest bırakmak reader_writer_lock
için scoped_lock_read yapısını kullanmak genellikle daha güvenlidir.
Kilitte bekleyen yazarlar varsa, okuyucu satırdaki tüm yazarlar kilidi alıp serbest bırakıncaya kadar bekler. Bu kilit, yazarlara karşı taraflıdır ve yazarların sürekli yükü altında okuyucuları aç bırakabilir.
reader_writer_lock
Yeni reader_writer_lock
bir nesne oluşturur.
reader_writer_lock();
~reader_writer_lock
Nesneyi yok eder reader_writer_lock
.
~reader_writer_lock();
Açıklamalar
Yıkıcı çalıştığında kilidin artık tutulmaması beklenir. Okuyucu yazıcı kilidinin kilitliyken yok etmesine izin vermek tanımsız davranışla sonuçlanır.
reader_writer_lock::scoped_lock Sınıfı
Kilit nesnelerini yazıcı olarak almak reader_writer_lock
için kullanılabilecek özel durum güvenli RAII sarmalayıcı.
class scoped_lock;
scoped_lock::scoped_lock
Bir scoped_lock
nesnesi oluşturur ve parametresinde reader_writer_lock
_Reader_writer_lock
yazar olarak geçirilen nesneyi alır. Kilit başka bir iş parçacığı tarafından tutulursa, bu çağrı engellenir.
explicit _CRTIMP scoped_lock(reader_writer_lock& _Reader_writer_lock);
Parametreler
_Reader_writer_lock
Yazar reader_writer_lock
olarak elde etmek için nesne.
scoped_lock::~scoped_lock
Bir reader_writer_lock
nesneyi yok eder ve oluşturucusunda sağlanan kilidi serbest bırakır.
~scoped_lock();
reader_writer_lock::scoped_lock_read Sınıfı
Kilit nesnelerini okuyucu olarak almak reader_writer_lock
için kullanılabilecek özel durum güvenli RAII sarmalayıcı.
class scoped_lock_read;
scoped_lock_read::scoped_lock_read
Bir scoped_lock_read
nesnesi oluşturur ve parametresinde reader_writer_lock
_Reader_writer_lock
okuyucu olarak geçirilen nesneyi alır. Kilit başka bir iş parçacığı tarafından yazar olarak tutulursa veya bekleyen yazarlar varsa, bu çağrı engellenir.
explicit _CRTIMP scoped_lock_read(reader_writer_lock& _Reader_writer_lock);
Parametreler
_Reader_writer_lock
reader_writer_lock
Okuyucu olarak edinilen nesne.
reader_writer_lock::scoped_lock_read::~scoped_lock_read Yıkıcı
Bir scoped_lock_read
nesneyi yok eder ve oluşturucusunda sağlanan kilidi serbest bırakır.
~scoped_lock_read();
try_lock
Okuyucu-yazar kilidini engellemeden yazar olarak almaya çalışır.
Sözdizimi
bool try_lock();
Dönüş Değeri
Kilit alınırsa değeri true
; aksi takdirde değeri olur false
.
try_lock_read
Okuyucu yazıcı kilidini engellemeden okuyucu olarak almaya çalışır.
bool try_lock_read();
Dönüş Değeri
Kilit alınırsa değeri true
; aksi takdirde değeri olur false
.
kilidi açmak
Okuyucu-yazar kilidini, kimlerin kilitlediğinden, okuyucudan veya yazardan alır.
void unlock();
Açıklamalar
Kilitte bekleyen yazarlar varsa, kilidin serbest bırakılması her zaman FIFO sırasına göre bir sonraki yazıcıya gider. Bu kilit, yazarlara karşı taraflıdır ve yazarların sürekli yükü altında okuyucuları aç bırakabilir.