【sylar-webserver】7 定时器模块

文章目录

设计

belongs to 1 1 manages many <<enable_shared_from_this>> Timer -uint64_t m_ms -uint64_t m_next -bool m_recurring -TimerManager* m_manager +struct Comparator -std::function m_cb +bool cancel() +bool refresh() +bool reset(uint64_t ms, bool from_now) -Timer(uint64_t ms, std::function cb, bool recurring, TimerManager* manager) -Timer(uint64_t next) TimerManager -RWMutexType m_mutex -std::set m_timers -bool m_tickled -uint64_t m_previouseTime +TimerManager() +~TimerManager() +Timer::ptr addTimer(uint64_t ms, std::function cb, bool recurring = false) +Timer::ptr addConditionTimer(uint64_t ms, std::function cb, std::weak_ptr weak_cond, bool recurring = false) +uint64_t getNextTimer() +void listExpiredCb(std::vector>& cbs) +bool hasTimer() +bool detectClockRollover(uint64_t now_ms) #virtual void onTimerInsertedAtFront() #void addTimer(Timer::ptr val, RWMutexType::WriteLock& lock) enable_shared_from_this
Main iom timer_callback g_logger s_timer test_timer() addTimer(1000, timer_callback, true) Create and start recurring timer (1000ms) addTimer(500, lambda) Log "500ms timeout" after 500ms addTimer(5000, lambda) Log "5000ms timeout" after 5000ms timer_callback() Log "timer callback, timeout = {timeout}" Reset timer with new timeout (+1000ms) Cancel timer Stop recurring execution alt timeout \>= 5000 loop Recurring Timer Execution Main iom timer_callback g_logger s_timer

知识点

相关推荐
番茄啊9 分钟前
linux 开启xftp连接
linux·运维·服务器
CodeYp201917 分钟前
第1讲:Linux 基础指令
linux·指令
李松桃1 小时前
基于端口号的服务配置
linux·nginx-核心模块配置
Chen_harmony2 小时前
七、STL与string类
开发语言·c++
xxxiugou1232 小时前
C++命名空间与引用全解析
开发语言·c++
用户7624117567053 小时前
第十五章 人工智能基础
c++
CodeYp20196 小时前
第14讲:mmap 实现文件 LRU 缓存
linux·lru·mmap
程序开发阿元6 小时前
一台 20G 的 VPS 被日志吃掉一半:我按这个顺序查了二十分钟
linux·ssh
爱写Bug的浮游6 小时前
unique_ptr 零开销的真相与边界
c++·facebook
.冰块.6 小时前
流量大了自动加 Pod!K8s HPA 扩缩容与 ResourceQuota/LimitRange 资源管控实战
linux·云原生·容器·kubernetes·hpa·quota·limitrange