muduo C++11 CountDownLatch
时间: 2024-01-20 15:16:28 浏览: 179
muduo是一个基于C++的网络库,它采用了现代C++11的特性。CountDownLatch是muduo库中的一个类,用于实现线程同步。它可以让一个或多个线程等待其他线程完成某个任务后再继续执行。
下面是一个使用muduo C++11 CountDownLatch的示例代码:
```cpp
#include <muduo/base/CountDownLatch.h>
#include <muduo/base/Thread.h>
#include <iostream>
using namespace muduo;
void workerFunc(CountDownLatch& latch)
{
std::cout << "Worker thread started" << std::endl;
// 模拟耗时操作
muduo::CurrentThread::sleepUsec(1000000);
std::cout << "Worker thread finished" << std::endl;
latch.countDown(); // 完成任务后调用countDown()减少计数
}
int main()
{
CountDownLatch latch(1); // 初始化计数为1
Thread workerThread([&latch]() {
workerFunc(latch); });
workerThread.start();
std::cout << "Main thread waiting" << std::endl;
latch.wait(); // 等待计数为0
std::cout << "Main thread resumed" << std::endl;
workerThread.join();
return 0;
}
```
在上面的示例中,我们创建了一个CountDownLatch对象,并将计数初始化为1。然后创建了一个工作线程,该线程执行workerFunc函数。在workerFunc函数中,我们模拟了一个耗时操作,并在完成任务后调用countDown()减少计数。
在主线程中,我们调用latch.wait()来等待计数为0。一旦计数为0,主线程就会继续执行。最后,我们等待工作线程结束。
阅读全文