c++ 封装一个条件变量和互斥量的类
时间: 2023-12-10 17:17:16 浏览: 164
C++跨平台条件变量和互斥锁封装
4星 · 用户满意度95%
好的,以下是一个简单的 C++ 条件变量和互斥量类的封装示例:
```c++
#include <mutex>
#include <condition_variable>
class ConditionVariable {
public:
ConditionVariable() : m_cond(), m_mutex() {}
void wait() {
std::unique_lock<std::mutex> lock(m_mutex);
m_cond.wait(lock);
}
void notify() {
std::unique_lock<std::mutex> lock(m_mutex);
m_cond.notify_one();
}
void notify_all() {
std::unique_lock<std::mutex> lock(m_mutex);
m_cond.notify_all();
}
private:
std::condition_variable m_cond;
std::mutex m_mutex;
};
```
在上面的示例中,我们使用 `std::condition_variable` 和 `std::mutex` 来实现条件变量和互斥量。`wait()` 方法会阻塞当前线程直到收到一个通知,`notify()` 方法会发送一个通知唤醒一个等待的线程,`notify_all()` 方法会唤醒所有等待的线程。注意,在调用 wait() 方法之前,必须先获得互斥锁,否则会出现死锁的情况。
阅读全文