其他分享
首页 > 其他分享> > muduo Timer

muduo Timer

作者:互联网

简介

定时器功能由TimerId,Timer,TimerQueue实现,用户只能看到TimerId
TimerQueue只暴露两个接口addTimer和cancel,addTimer供eventloop使用,会包装成runat,runafter,runevery

实现

eventloop调用

runat,runafer,runevery都调用了addTimer,这三个函数应该运行跨线程,比如在某个IO线程超时回调。muduo不使用加锁解决,而使用runInloop把TimerQueue操作转移到IO线程进行
runInloop在IO线程执行某个用户任务回调。如果当前IO线程调用这个函数,回调会同步进行。如果用户在其他线程调用runinloop,cb会加入队列,io线程会被唤醒调用这个functor

有了这个功能,就可以轻易在线程间调配任务。由于IO线程平时阻塞在loop的poll调用,所以为了能立即执行用户回调,需要设法唤醒它。

标签:调用,Timer,muduo,线程,TimerQueue,IO
来源: https://www.cnblogs.com/lygin/p/16669004.html