muduo 使用mutex 和condition_variable 重写CountDownLatch.h
时间: 2024-01-25 10:12:24 浏览: 96
以下是使用mutex和condition_variable重写CountDownLatch.h的示例代码:
```cpp
#include <mutex>
#include <condition_variable>
class CountDownLatch {
public:
explicit CountDownLatch(int count) : count_(count) {}
void wait() {
std::unique_lock<std::mutex> lock(mutex_);
while (count_ > 0) {
condition_.wait(lock);
}
}
void countDown() {
std::lock_guard<std::mutex> lock(mutex_);
--count_;
if (count_ == 0) {
condition_.notify_all();
}
}
private:
std::mutex mutex_;
std::condition_variable condition_;
int count_;
};
```
使用mutex和condition_variable可以实现线程同步和等待的功能。在上述代码中,CountDownLatch类使用了一个互斥锁mutex和一个条件变量condition_variable来实现等待和通知的机制。wait()函数在mutex已上锁的情况下调用condition_variable的wait()函数进行等待,直到count_的值为0时才继续执行。countDown()函数在mutex已上锁的情况下将count_的值减1,并在count_的值为0时调用condition_variable的notify_all()函数通知所有等待的线程。
阅读全文