Kelas reader_writer_lock

Kunci pembaca-penulis berbasis antrean berbasis antrean penulis dengan putaran lokal saja. Kunci memberikan akses pertama masuk - keluar pertama (FIFO) ke penulis dan pembaca kelaparan di bawah beban penulis berkelanjutan.

Sintaks

class reader_writer_lock;

Anggota

Kelas Publik

Nama Deskripsi
Kelas reader_writer_lock::scoped_lock Pembungkus RAII aman pengecualian yang dapat digunakan untuk memperoleh reader_writer_lock objek kunci sebagai penulis.
kelas reader_writer_lock::scoped_lock_read Pembungkus RAII aman pengecualian yang dapat digunakan untuk memperoleh reader_writer_lock objek kunci sebagai pembaca.

Konstruktor Publik

Nama Deskripsi
reader_writer_lock Membuat objek baru reader_writer_lock .
~reader_writer_lock Destructor reader_writer_lock Menghancurkan objek.

Metode Publik

Nama Deskripsi
kunci Memperoleh kunci pembaca-penulis sebagai penulis.
lock_read Memperoleh kunci pembaca-penulis sebagai pembaca. Jika ada penulis, pembaca aktif harus menunggu sampai selesai. Pembaca hanya mendaftarkan minat pada kunci dan menunggu penulis melepaskannya.
try_lock Mencoba untuk memperoleh kunci pembaca-penulis sebagai penulis tanpa memblokir.
try_lock_read Mencoba untuk memperoleh kunci pembaca-penulis sebagai pembaca tanpa memblokir.
Membuka Membuka kunci pembaca-penulis berdasarkan siapa yang menguncinya, pembaca, atau penulis.

Keterangan

Untuk informasi selengkapnya, lihat Struktur Data Sinkronisasi.

Hierarki Warisan

reader_writer_lock

Persyaratan

Header: concrt.h

Namespace: konkurensi

kunci

Memperoleh kunci pembaca-penulis sebagai penulis.

void lock();

Keterangan

Seringkali lebih aman untuk menggunakan konstruksi scoped_lock untuk memperoleh dan melepaskan reader_writer_lock objek sebagai penulis dengan cara yang aman.

Setelah penulis mencoba untuk memperoleh kunci, setiap pembaca di masa depan akan memblokir sampai penulis berhasil memperoleh dan melepaskan kunci. Kunci ini bias terhadap penulis dan dapat membuat pembaca kelaparan di bawah beban penulis berkelanjutan.

Penulis ditautkan sehingga penulis yang keluar dari kunci melepaskan penulis berikutnya sejalan.

Jika kunci sudah dipegang oleh konteks panggilan, pengecualian improper_lock akan dilemparkan.

lock_read

Memperoleh kunci pembaca-penulis sebagai pembaca. Jika ada penulis, pembaca aktif harus menunggu sampai selesai. Pembaca hanya mendaftarkan minat pada kunci dan menunggu penulis melepaskannya.

void lock_read();

Keterangan

Seringkali lebih aman untuk menggunakan konstruksi scoped_lock_read untuk memperoleh dan melepaskan reader_writer_lock objek sebagai pembaca dengan cara yang aman.

Jika ada penulis yang menunggu di kunci, pembaca akan menunggu sampai semua penulis sejalan telah memperoleh dan melepaskan kunci. Kunci ini bias terhadap penulis dan dapat membuat pembaca kelaparan di bawah beban penulis berkelanjutan.

reader_writer_lock

Membuat objek baru reader_writer_lock .

reader_writer_lock();

~reader_writer_lock

reader_writer_lock Menghancurkan objek.

~reader_writer_lock();

Keterangan

Diharapkan bahwa kunci tidak lagi dipegang ketika destruktor berjalan. Mengizinkan kunci penulis pembaca untuk dihancurkan dengan kunci yang masih ditahan menghasilkan perilaku yang tidak ditentukan.

Kelas reader_writer_lock::scoped_lock

Pembungkus RAII aman pengecualian yang dapat digunakan untuk memperoleh reader_writer_lock objek kunci sebagai penulis.

class scoped_lock;

scoped_lock::scoped_lock

Membuat scoped_lock objek dan memperoleh objek yang reader_writer_lock diteruskan dalam _Reader_writer_lock parameter sebagai penulis. Jika kunci dipegang oleh utas lain, panggilan ini akan memblokir.

explicit _CRTIMP scoped_lock(reader_writer_lock& _Reader_writer_lock);

Parameter

_Reader_writer_lock
Objek reader_writer_lock untuk diperoleh sebagai penulis.

scoped_lock::~scoped_lock

reader_writer_lock Menghancurkan objek dan melepaskan kunci yang disediakan dalam konstruktornya.

~scoped_lock();

kelas reader_writer_lock::scoped_lock_read

Pembungkus RAII aman pengecualian yang dapat digunakan untuk memperoleh reader_writer_lock objek kunci sebagai pembaca.

class scoped_lock_read;

scoped_lock_read::scoped_lock_read

Membuat scoped_lock_read objek dan memperoleh objek yang reader_writer_lock diteruskan dalam _Reader_writer_lock parameter sebagai pembaca. Jika kunci dipegang oleh utas lain sebagai penulis atau ada penulis yang tertunda, panggilan ini akan memblokir.

explicit _CRTIMP scoped_lock_read(reader_writer_lock& _Reader_writer_lock);

Parameter

_Reader_writer_lock
Objek reader_writer_lock untuk diperoleh sebagai pembaca.

reader_writer_lock::scoped_lock_read::~scoped_lock_read Destructor

scoped_lock_read Menghancurkan objek dan melepaskan kunci yang disediakan dalam konstruktornya.

~scoped_lock_read();

try_lock

Mencoba untuk memperoleh kunci pembaca-penulis sebagai penulis tanpa memblokir.

Sintaks

bool try_lock();

Tampilkan Nilai

Jika kunci diperoleh, nilai true; jika tidak, nilai false.

try_lock_read

Mencoba untuk memperoleh kunci pembaca-penulis sebagai pembaca tanpa memblokir.

bool try_lock_read();

Tampilkan Nilai

Jika kunci diperoleh, nilai true; jika tidak, nilai false.

Membuka

Membuka kunci pembaca-penulis berdasarkan siapa yang menguncinya, pembaca, atau penulis.

void unlock();

Keterangan

Jika ada penulis yang menunggu di kunci, pelepasan kunci akan selalu pergi ke penulis berikutnya dalam urutan FIFO. Kunci ini bias terhadap penulis dan dapat membuat pembaca kelaparan di bawah beban penulis berkelanjutan.

Baca juga

Namespace layanan konkurensi
Kelas critical_section