Rumah > Artikel > pembangunan bahagian belakang > Apakah peranan pembolehubah keadaan dalam pengaturcaraan berbilang benang C++?
Pembolehubah keadaan digunakan untuk penyegerakan utas, membenarkan utas menunggu untuk syarat tertentu dipenuhi. Keadaan menunggu: Benang memanggil tunggu() untuk menunggu syarat dipenuhi Selepas syarat dipenuhi, benang dibangkitkan.
Peranan pembolehubah keadaan dalam pengaturcaraan berbilang benang C++
Pengenalan
Pembolehubah keadaan ialah primitif penyegerakan yang digunakan untuk penyegerakan utas, membenarkan urutan keadaan tertentu dipenuhi. Dalam C++, pembolehubah keadaan dilaksanakan melalui kelas std::condition_variable
. std::condition_variable
类实现的。
作用
condition variables 的作用是:
notify_one()
或 notify_all()
函数通知其他线程某个条件已被满足。wait()
pembolehubah keadaan ialah:
Notify thread:
A thread boleh memanggilnotify_one()
atau notify_all()
Fungsi memberitahu urutan lain bahawa syarat tertentu telah dipenuhi.
Benang boleh menunggu syarat tertentu untuk dipenuhi dengan memanggil fungsi wait()
. Apabila syarat dipenuhi, benang akan dikejutkan.
Kes Praktikal
🎜🎜Pertimbangkan masalah pengeluar-pengguna berikut menggunakan pembolehubah keadaan: 🎜#include <iostream> #include <condition_variable> #include <mutex> std::mutex m; // 互斥锁 std::condition_variable cv; // 条件变量 bool ready = false; // 是否准备好 void producer() { std::unique_lock<std::mutex> lock(m); // 生产数据... ready = true; cv.notify_one(); // 通知消费者数据已准备好 } void consumer() { std::unique_lock<std::mutex> lock(m); while (!ready) { cv.wait(lock); } // 等待数据准备好 // 消费数据... } int main() { std::thread t1(producer); std::thread t2(consumer); t1.join(); t2.join(); return 0; }🎜Dalam contoh ini, urutan pengeluar menggunakan pembolehubah keadaan untuk memberitahu urutan pengguna bahawa data sudah sedia. Benang pengguna menunggu pada pembolehubah keadaan sehingga data sedia. 🎜🎜🎜Kesimpulan🎜🎜🎜Pembolehubah keadaan ialah alat yang berkuasa dalam C++ untuk menyegerakkan atur cara berbilang benang. Mereka membenarkan benang menunggu syarat tertentu sehingga syarat itu dipenuhi. 🎜
Atas ialah kandungan terperinci Apakah peranan pembolehubah keadaan dalam pengaturcaraan berbilang benang C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!