Aracılığıyla paylaş


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.

Ayrıca bkz.

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