reader_writer_lock Sınıfı

Yalnızca yerel olarak dönen yazıcı tercihi kuyruk tabanlı okuyucu yazıcı kilidi. Kilit, yazarlara ilk giren - ilk çıkar (FIFO) erişimi verir ve yazarların sürekli yükü altında okuyucuları aç bırakı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ı Özel durumlar için güvenli olan RAII sarmalayıcı, reader_writer_lock kilit nesnelerini yazar olarak almak için kullanılabilir.
reader_writer_lock::scoped_lock_read Sınıfı İstisna güvenli RAII sarmalayıcı, kilit nesnelerini okuyucu olarak almak için kullanılabilir.

Ortak Oluşturucular

Veri Akışı Adı Açıklama
okuyucu_yazıcı_kilidi Yeni reader_writer_lock bir nesne oluşturur.
~reader_writer_lock Tahripçi reader_writer_lock nesnesini yok eder.

Genel Yöntemler

Veri Akışı Adı Açıklama
lock Okuyucu-yazar kilidini yazar modunda alır.
lock_read Okuyucu-yazıcı kilidini okuyucu rolünde elde eder. Yazarlar varsa, etkin okuyucuların bitirene kadar beklemeleri gerekir. Okuyucu yalnızca kilide ilgi kaydeder ve yazarların kilidi serbest bırakmasını bekler.
try_lock Okuyucu-yazar kilidini engellemeden yazar olarak almaya çalışır.
try_lock_read Engellemeden okuyucu olarak okuyucu-yazıcı kilidini almaya çalışır.
kilidi açmak Okuyucu-yazar kilidi, okuyucu mu yoksa yazar mı kilitlediğine bağlı olarak açılı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 edinir.

void lock();

Açıklamalar

Bir nesneyi bir yazıcı olarak özel durumlara karşı güvenli bir şekilde almak ve serbest bırakmak 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, bir yazar kilitten çıktığında sıradaki yazarı serbest bırakacak şekilde zincirlenir.

Kilit çağrı bağlamı tarafından zaten tutulursa, bir improper_lock özel durumu oluşturulur.

kilit_okuma

Okuyucu-yazıcı kilidini okuyucu rolünde elde eder. Yazarlar varsa, etkin okuyucuların bitirene kadar beklemeleri gerekir. Okuyucu yalnızca kilide ilgi kaydeder ve yazarların kilidi serbest bırakmasını bekler.

void lock_read();

Açıklamalar

Genellikle bir nesneyi okuma amacıyla edinmek ve serbest bırakmak için scoped_lock_read yapısını kullanmak, özel durumlar karşısında 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.

okuyucu_yazar_kilidi

Yeni reader_writer_lock bir nesne oluşturur.

reader_writer_lock();

~reader_writer_lock

reader_writer_lock nesnesini yok eder.

~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ı

Özel durumlar için güvenli olan RAII sarmalayıcı, reader_writer_lock kilit nesnelerini yazar olarak almak için kullanılabilir.

class scoped_lock;

scoped_lock::scoped_lock

Bir scoped_lock nesnesi oluşturur ve _Reader_writer_lock parametresinde yazar olarak geçirilen reader_writer_lock nesnesini 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

_Okuyucu_yazıcı_kilidi
Yazar olarak elde edilmesi gereken reader_writer_lock nesnesi.

scoped_lock::~scoped_lock

reader_writer_lock nesnesini yok eder ve oluşturucuda sağlanan kilidi serbest bırakır.

~scoped_lock();

reader_writer_lock::scoped_lock_read Sınıfı

İstisna güvenli RAII sarmalayıcı, kilit nesnelerini okuyucu olarak almak için kullanılabilir.

class scoped_lock_read;

scoped_lock_read::scoped_lock_read

Bir scoped_lock_read nesnesi oluşturur ve parametre olarak iletilen reader_writer_lock nesnesini bir _Reader_writer_lock okuyucu olarak edinir. 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

_Okuyucu_yazıcı_kilidi
reader_writer_lock Okuyucu olarak edinilen nesne.

reader_writer_lock::scoped_lock_read::~scoped_lock_read Yıkıcı İşlev

Bir scoped_lock_read nesneyi yok eder ve oluşturucusunda sağlanan kilidi serbest bırakır.

~scoped_lock_read();

kilitlemeyi_dene

Okuyucu-yazar kilidini engellemeden yazar olarak almaya çalışır.

Sözdizimi

bool try_lock();

Dönüş Değeri

Kilit alınırsa değer true; aksi takdirde false.

okuma kilidi dene

Engellemeden okuyucu olarak okuyucu-yazıcı kilidini almaya çalışır.

bool try_lock_read();

Dönüş Değeri

Kilit alınırsa değer true; aksi takdirde false.

kilidi açmak

Okuyucu-yazar kilidi, okuyucu mu yoksa yazar mı kilitlediğine bağlı olarak açılı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.

Ayrıca bkz.

Eşzamanlılık Ad Alanı
critical_section Sınıfı