muduo库源码学习(base)CountDownLatch
来源:互联网 发布:java web 单元测试 编辑:程序博客网 时间:2024/06/05 05:47
#ifndef MUDUO_BASE_COUNTDOWNLATCH_H#define MUDUO_BASE_COUNTDOWNLATCH_H#include "./Condition.h"#include "./Mutex.h"#include <boost/noncopyable.hpp>namespace muduo{class CountDownLatch : boost::noncopyable//CountDownLatch作为成员的计数器使用{ public: explicit CountDownLatch(int count); void wait(); void countDown(); int getCount() const; private: mutable MutexLock mutex_; Condition condition_; int count_;};}#endif // MUDUO_BASE_COUNTDOWNLATCH_H
#include "./CountDownLatch.h"using namespace muduo;CountDownLatch::CountDownLatch(int count) : mutex_(), condition_(mutex_), count_(count){}void CountDownLatch::wait(){ MutexLockGuard lock(mutex_); while (count_ > 0) { condition_.wait(); }}void CountDownLatch::countDown(){ MutexLockGuard lock(mutex_); --count_; if (count_ == 0)//一旦目标线程全部开启,发送信号使等待中的线程解锁 { condition_.notifyAll(); }}int CountDownLatch::getCount() const{ MutexLockGuard lock(mutex_); return count_;}
阅读全文
0 0
- muduo库源码学习(base)CountDownLatch
- muduo库源码学习(base)Atomic
- muduo库源码学习(base)AsyncLogging
- muduo库源码学习(base)Condition
- muduo库源码学习(base)Date
- muduo库源码学习(base)Exception
- muduo库源码学习(base)FileUtil
- muduo库源码学习(base)mutex
- muduo库源码学习(base)singleton
- muduo库源码学习(base)ThreadLocal
- muduo库源码学习(base)ThreadLocalSingleton
- muduo库源码学习(base):Logfile
- muduo库源码学习(base):LogStream
- muduo库源码学习(base):WeakCallback
- [Muduo网络库源码分析] (3) base/CountDownLatch.cc_h_“倒计时门闩”同步
- muduo库源码学习(base)BlockingQueue和BoundBlockingQueue
- muduo库源码学习(base)Thread和CurrentThread
- [Muduo网络库源码分析] (10) base/ThreadPoll_cc_h_线程池
- Django编写RESTful API(二):请求和响应
- Docker 学习笔记 1
- log库spdlog简介及使用
- Python系列-入门练习
- Java NIO系列教程(7):FileChannel
- muduo库源码学习(base)CountDownLatch
- PBCH (Physical Broadcast Channel)
- 微信支付:授权回调地址校验错误,错误码10003
- java.net.Inet4Address 代码实例
- nodejs常用模块
- 几种色彩模式简介
- Java的IO流--BufferedReader和BufferedWriter,BufferedInputStream和BufferedOutputStream
- Crazepony开源四轴飞行器
- 10.25作业,关于数组的题目