条件変数はスレッドの同期に使用され、スレッドが特定の条件が満たされるまで待機できるようにします。 スレッドの通知: スレッドは、notify_one() または Notice_all() を呼び出して、条件が満たされたことを他のスレッドに通知します。待機条件: スレッドは wait() を呼び出して、条件が満たされるまで待機します。条件が満たされると、スレッドが起動されます。
C++ マルチスレッドプログラミングにおける条件変数の役割
はじめに
条件変数は、スレッドの同期に使用される同期プリミティブであり、スレッドが特定の条件が満たされるまで待機できるようにします。 C++ では、条件変数は std::condition_variable
クラスを通じて実装されます。 std::condition_variable
类实现的。
作用
condition variables 的作用是:
notify_one()
或 notify_all()
函数通知其他线程某个条件已被满足。wait()
notify_one()
または notify_all()
を呼び出すことができます。関数は、特定の条件が満たされたことを他のスレッドに通知します。 待機条件:
スレッドは、wait()
関数を呼び出すことで、特定の条件が満たされるまで待機できます。条件が満たされると、スレッドが起動されます。
実際のケース
条件変数を使用した次のプロデューサー-コンシューマー問題を考えてみましょう:
#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; }
以上がC++ マルチスレッド プログラミングにおける条件変数の役割は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。