Les variables de condition sont utilisées pour la synchronisation des threads, permettant aux threads d'attendre que des conditions spécifiques soient remplies. Les fonctions spécifiques incluent : Threads de notification : les threads appellent notify_one() ou notify_all() pour informer les autres threads que les conditions ont été remplies. Condition d'attente : le thread appelle wait() pour attendre que la condition soit remplie. Une fois la condition remplie, le thread est réveillé.
Le rôle des variables de condition dans la programmation multithread C++
Introduction
Une variable de condition est une primitive de synchronisation utilisée pour la synchronisation des threads, permettant à un thread d'attendre qu'une condition spécifique soit remplie. En C++, les variables de condition sont implémentées via la classe std::condition_variable
. std::condition_variable
类实现的。
作用
condition variables 的作用是:
notify_one()
或 notify_all()
函数通知其他线程某个条件已被满足。wait()
variables de condition est :
Notifier les threads :
Un thread peut appelernotify_one()
ou notify_all()
La fonction informe les autres threads qu'une certaine condition a été remplie.
Les threads peuvent attendre qu'une certaine condition soit satisfaite en appelant la fonction wait()
. Lorsque la condition est remplie, le fil sera réveillé.
Cas pratique
🎜🎜Considérez le problème producteur-consommateur suivant en utilisant des variables de condition : 🎜#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; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!