Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Gunakan kelas condition_variable_any untuk menunggu peristiwa yang memiliki jenis apa pun mutex .
Sintaks
class condition_variable_any;
Anggota
Konstruktor
| Nama | Deskripsi |
|---|---|
| condition_variable_any | Membuat condition_variable_any objek. |
Fungsi
| Nama | Deskripsi |
|---|---|
| notify_all | Membuka blokir semua utas yang menunggu condition_variable_any objek. |
| notify_one | Membuka blokir salah satu utas yang sedang menunggu condition_variable_any objek. |
| Tunggu | Memblokir utas. |
| wait_for | Memblokir utas, dan mengatur interval waktu setelah utas membuka blokir. |
| wait_until | Memblokir utas, dan mengatur titik waktu maksimum di mana utas membuka blokir. |
condition_variable_any
Membuat condition_variable_any objek.
condition_variable_any();
Keterangan
Jika memori tidak cukup tersedia, konstruktor melempar objek system_error yang memiliki not_enough_memory kode kesalahan. Jika objek tidak dapat dibangun karena beberapa sumber daya lain tidak tersedia, konstruktor melempar system_error objek yang memiliki resource_unavailable_try_again kode kesalahan.
notify_all
Membuka blokir semua utas yang menunggu condition_variable_any objek.
void notify_all() noexcept;
notify_one
Membuka blokir salah satu utas yang menunggu pada condition_variable_any objek.
void notify_one() noexcept;
tunggu
Memblokir utas.
template <class Lock>
void wait(Lock& Lck);
template <class Lock, class Predicate>
void wait(Lock& Lck, Predicate Pred);
Parameter
Lck
Objek mutex dari jenis apa pun.
Pred
Ekspresi apa pun yang mengembalikan true atau false.
Keterangan
Metode pertama memblokir hingga condition_variable_any objek disinyalir oleh panggilan ke notify_one atau notify_all. Ini juga bisa terbangun dengan memuaskan.
Metode kedua yang berlaku menjalankan kode berikut.
while (!Pred())
wait(Lck);
wait_for
Memblokir utas, dan mengatur interval waktu setelah utas membuka blokir.
template <class Lock, class Rep, class Period>
bool wait_for(Lock& Lck, const chrono::duration<Rep, Period>& Rel_time);
template <class Lock, class Rep, class Period, class Predicate>
bool wait_for(Lock& Lck, const chrono::duration<Rep, Period>& Rel_time, Predicate Pred);
Parameter
Lck
Objek mutex dari jenis apa pun.
Rel_time
Objek chrono::duration yang menentukan jumlah waktu sebelum utas bangun.
Pred
Ekspresi apa pun yang mengembalikan true atau false.
Tampilkan Nilai
Metode pertama mengembalikan cv_status::timeout jika penantian berakhir ketika Rel_time telah berlalu. Jika tidak, metode mengembalikan cv_status::no_timeout.
Metode kedua mengembalikan nilai Pred.
Keterangan
Metode pertama memblokir hingga condition_variable_any objek diberi sinyal oleh panggilan ke notify_one atau notify_all, atau sampai interval waktu Rel_time berlalu. Ini juga bisa terbangun dengan memuaskan.
Metode kedua yang berlaku menjalankan kode berikut.
while(!Pred())
if(wait_for(Lck, Rel_time) == cv_status::timeout)
return Pred();
return true;
wait_until
Memblokir utas, dan mengatur titik waktu maksimum di mana utas membuka blokir.
template <class Lock, class Clock, class Duration>
void wait_until(Lock& Lck, const chrono::time_point<Clock, Duration>& Abs_time);
template <class Lock, class Clock, class Duration, class Predicate>
void wait_until(
Lock& Lck,
const chrono::time_point<Clock, Duration>& Abs_time,
Predicate Pred);
template <class Lock>
void wait_until(Lock Lck, const xtime* Abs_time);
template <class Lock, class Predicate>
void wait_until(
Lock Lck,
const xtime* Abs_time,
Predicate Pred);
Parameter
Lck
Objek mutex.
Abs_time
Objek chrono::time_point .
Pred
Ekspresi apa pun yang mengembalikan true atau false.
Tampilkan Nilai
Metode yang mengembalikan cv_status jenis kembali cv_status::timeout jika tunggu berakhir saat Abs_time berlalu. Jika tidak, metode mengembalikan cv_status::no_timeout.
Metode yang mengembalikan bool nilai Pred.
Keterangan
Metode pertama memblokir hingga condition_variable objek diberi sinyal oleh panggilan ke notify_one atau notify_all, atau sampai Abs_time. Ini juga bisa terbangun dengan memuaskan.
Metode kedua yang berlaku menjalankan kode berikut.
while(!Pred())
if(wait_until(Lck, Abs_time) == cv_status::timeout)
return Pred();
return true;
Metode ketiga dan keempat menggunakan penunjuk ke objek jenis xtime untuk mengganti chrono::time_point objek. Objek xtime menentukan jumlah waktu maksimum untuk menunggu sinyal.