muduo库阅读(31)——Net部分:定时器(计时器)Timer
来源:互联网 发布:mac照片应用存在哪里 编辑:程序博客网 时间:2024/05/14 21:47
/* * 计时器、定时器 */namespace muduo{namespace net{/* * 主要用于定时器事件 */class Timer : boost::noncopyable{public:Timer(const TimerCallback& cb, Timestamp when, double interval): callback_(cb), expiration_(when), interval_(interval), repeat_(interval > 0.0), sequence_(s_numCreated_.incrementAndGet()){ }#ifdef __GXX_EXPERIMENTAL_CXX0X__Timer(TimerCallback&& cb, Timestamp when, double interval): callback_(std::move(cb)), expiration_(when), interval_(interval), repeat_(interval > 0.0), sequence_(s_numCreated_.incrementAndGet()){ }#endifvoid run() const{callback_();}// 获取到期的时间Timestamp expiration() const { return expiration_; }// 是否会重复调用(即是否为周期性定时器)bool repeat() const { return repeat_; }// 定时器的序号int64_t sequence() const { return sequence_; }// 重新开始void restart(Timestamp now);// 获取定时器的个数static int64_t numCreated() { return s_numCreated_.get(); }private:// 定时器到期回调函数const TimerCallback callback_;// 到期时间Timestamp expiration_;// 周期长度const double interval_;// 是否为周期性的计时器(定时器)const bool repeat_;// 计时器的序号(由s_numCreated_计算而出)const int64_t sequence_;// 创建了多少个计时器static AtomicInt64 s_numCreated_;};}}
using namespace muduo;using namespace muduo::net;AtomicInt64 Timer::s_numCreated_;// 重新开始——重新设置到期时间void Timer::restart(Timestamp now){// 如果是周期性的定时器,那么重新设置到期时间if (repeat_){expiration_ = addTime(now, interval_);}else{expiration_ = Timestamp::invalid();}}
0 0
- muduo库阅读(31)——Net部分:定时器(计时器)Timer
- muduo库阅读(32)——Net部分:定时器(计时器)ID类TimerId
- muduo库阅读(33)——Net部分:定时器队列TimerQueue
- muduo库阅读(43)——Net部分:轮询器的epoll实现——EPollPoller
- muduo库阅读(29)——Net部分:Reactor(EventLoop事件循环)
- muduo库阅读(23)——Net部分:应用层缓冲区类
- muduo库阅读(24)——Net部分:网络地址类
- muduo库阅读(25)——Net部分:服务器端的套接字类
- muduo库阅读(26)——Net部分:套接字常用操作的封装
- muduo库阅读(27)——Net部分:字节顺序转换的封装
- muduo库阅读(28)——Net部分:各类回调函数的定义
- muduo库阅读(30)——Net部分:事件处理器Channel
- muduo库阅读(34)——Net部分:轮询器基类Poller
- muduo库阅读(36)——Net部分:事件循环线程池EventLoopThreadPool
- muduo库阅读(37)——Net部分:压缩数据流ZlibOutputStream
- muduo库阅读(38)——Net部分:TCP连接TcpConnection
- muduo库阅读(39)——Net部分:接收者Accpetor
- muduo库阅读(40)——Net部分:TCP服务器TcpServer
- mac pro 配置caffe记录
- QuickSort
- c++primer第五版第八章练习
- The 2015 ACM-ICPC China Shanghai Metropolitan Programming Contest部分题解
- cocos游戏开发-常用的核心类
- muduo库阅读(31)——Net部分:定时器(计时器)Timer
- 简书-一个集优雅文艺和Markdown于一身的网站
- java 利用JAX-RS快速开发RESTful 服务
- Git 学习笔记
- KVM用命令行创建虚拟机并使用集成virtio驱动的win2008r2_x64安装光盘安装系统
- MySQL学习笔记2-System administration(Installing MySQL on Linux Using RPM Packages)
- There is no Action mapped for namespace / and action name toList.
- cocospod 安装和使用
- Xcode7如何使用帮助文档