webkit中的timer

我对webkit中timer理解:

  • timer就是定时器, webkit整体的运作逻辑都是依赖timer来驱动的
  • timer的实现各个平台的机制都不同, 因此webkit中需要能够将不同平台实现对接进来,平台依赖这部分主要用来触发最近一次timer

webkit中对timer的实现方式如下:

  1. TimerBase类表示每个具体的定时器, 包含了对该定时器的操作(比如启动一次, 循环, 激活, 停止等)
  2. 需要实现定时器的模板类(Timer)方式继承TimerBase, 模版类Timer的存在主要是用来指定回调函数
  3. 每个线程都有自己的定时器(多个Timer,继承TimerBase),用ThreadTimers通过线程私有数据来保存,防止线程间定时器的影响
  4. 由于timer的最终其实依赖平台来实现(porting),因此有一个对象来关联外部触发器,这个对象是SharedTimer
  5. 触发的方式是将ThreadTimers::sharedTimerFired设置到SharedTimer中,当下一个定时到来时这个函数会被触发,然后来完成定时器的触发

porting层的功能:

  1. porting层功能是设置下一次定时的时间(依赖平台), 当这次定时到来时触发定时器(调用ThreadTimers::sharedTimerFired
  2. ThreadTimers::sharedTimerFired中完成本次定时器触发,并查找下一次需要触发的时间,设定到porting层

poring层需要实现的函数:

   以下函数在webkit中有定义但是没有实现, 需要porting时自己去实现

  1.     void setSharedTimerFiredFunction(void (*)());  //porting层保存触发函数及ThreadTimers::sharedTimerFired, 在ThreadTimers构造过程中主动设置
  2.     void setSharedTimerFireInterval(double);          //porting层保存下次需要触发的时间
  3.     void stopSharedTimer();                                        //停止触发

定时器机制:

  1. android webkit java层的定时机制是通过在java层通过android.os.Handler来实现
  2. windows平台的定时机制通过WM_TIMER消息来实现


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值