std::condition_variable.notify_one
时间: 2024-06-15 19:07:44 浏览: 203
C++11 并发指南五(stdcondition_variable 详解).docx
std::condition_variable.notify_one()是C++中的一个函数,用于唤醒一个正在等待的线程。当某个线程调用std::condition_variable.wait()函数并进入等待状态时,其他线程可以通过调用notify_one()函数来唤醒其中一个等待的线程。
以下是一个示例代码,演示了如何使用std::condition_variable.notify_one()函数来唤醒一个等待的线程[^1]:
```cpp
#include <iostream>
#include <thread>
#include <condition_variable>
std::condition_variable cv;
std::mutex mtx;
bool ready = false;
void worker_thread()
{
std::unique_lock<std::mutex> lock(mtx);
while (!ready)
{
cv.wait(lock);
}
std::cout << "Worker thread is awake!" << std::endl;
}
int main()
{
std::thread worker(worker_thread);
// 主线程休眠一段时间
std::this_thread::sleep_for(std::chrono::seconds(2));
// 唤醒等待的线程
{
std::lock_guard<std::mutex> lock(mtx);
ready = true;
}
cv.notify_one();
worker.join();
return 0;
}
```
在上面的示例中,主线程创建了一个工作线程,并在工作线程中调用了std::condition_variable.wait()函数进入等待状态。主线程休眠2秒后,通过修改共享变量ready的值,并调用cv.notify_one()函数来唤醒等待的线程。被唤醒的线程将输出一条消息。
阅读全文