Wait和nitify的代码
时间: 2023-05-18 10:06:10 浏览: 72
我可以为您提供一个基本的Wait和Notify的代码示例:
```
#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
std::mutex mtx;
std::condition_variable cv;
bool ready = false;
void worker_thread() {
// 等待主线程通知
std::unique_lock<std::mutex> lock(mtx);
cv.wait(lock, []{ return ready; });
// 执行任务
std::cout << "Worker thread is processing data..." << std::endl;
}
int main() {
// 创建工作线程
std::thread worker(worker_thread);
// 主线程准备数据
std::cout << "Main thread is preparing data..." << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(2));
ready = true;
// 通知工作线程
cv.notify_one();
// 等待工作线程完成
worker.join();
return 0;
}
```
这是一个简单的生产者-消费者模型,主线程准备数据后通知工作线程进行处理。在工作线程中,我们使用了std::unique_lock和std::condition_variable来等待主线程的通知。当主线程准备好数据后,它会设置ready变量为true,并调用cv.notify_one()来通知工作线程。工作线程被唤醒后,会执行任务并退出。