温馨提示×

深入理解c++ condition机制

c++
小樊
98
2024-07-24 13:35:11
栏目: 编程语言

在C++中,条件变量是一种同步原语,用于在多线程环墫中协调线程的执行顺序。条件变量通常与互斥锁一起使用,以防止多个线程同时访问共享资源。

条件变量通过两个主要函数来实现:wait()和notify()。wait()函数会使当前线程等待,直到另一个线程调用notify()函数唤醒它。notify()函数用于唤醒等待在条件变量上的线程。

下面是一个简单的示例,演示了如何使用条件变量:

#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>

std::mutex mtx;
std::condition_variable cv;
bool ready = false;

void thread_function()
{
    std::unique_lock<std::mutex> lck(mtx);
    while (!ready)
    {
        cv.wait(lck);
    }
    std::cout << "Thread is now running!" << std::endl;
}

int main()
{
    std::thread t(thread_function);

    // Do some work

    {
        std::lock_guard<std::mutex> lck(mtx);
        ready = true;
    }
    cv.notify_one();

    t.join();

    return 0;
}

在这个例子中,我们创建了一个线程并在其中调用thread_function()函数。在主线程中,我们改变了ready变量的值,并通过调用cv.notify_one()函数来唤醒在条件变量上等待的线程。

需要注意的是,条件变量的使用通常需要与互斥锁一起使用,以确保在等待和通知过程中的线程安全。

0