Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.