C++使用条件变量实现线程间通信

   2024-10-07 2010
核心提示:条件变量是C++中多线程编程中常用的同步机制之一,用于在线程之间进行通信和同步。条件变量通常与互斥锁一起使用,以实现线程的

条件变量是C++中多线程编程中常用的同步机制之一,用于在线程之间进行通信和同步。条件变量通常与互斥锁一起使用,以实现线程的等待和唤醒。

下面是一个简单的示例,演示了如何使用条件变量来实现线程间通信:

#include <iostream>#include <thread>#include <mutex>#include <condition_variable>std::mutex mtx;std::condition_variable cv;bool ready = false;void thread_func() {    std::unique_lock<std::mutex> lock(mtx);    while (!ready) {        cv.wait(lock);    }    std::cout << "Thread is ready!" << std::endl;}int main() {    std::thread t(thread_func);    std::this_thread::sleep_for(std::chrono::seconds(2));    {        std::lock_guard<std::mutex> lock(mtx);        ready = true;    }    cv.notify_one();    t.join();    return 0;}

在上面的示例中,主线程创建一个新的线程,并在2秒后将ready设置为true,然后通过cv.notify_one()通知等待的线程。子线程在等待期间通过cv.wait(lock)等待条件变量cv的通知,一旦收到通知,子线程将继续执行。

需要注意的是,在使用条件变量时,需要确保在等待条件变量之前持有std::unique_lock锁,以确保线程安全。

希望这个示例能帮助你了解如何使用条件变量实现线程间通信。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号