zoukankan      html  css  js  c++  java
  • Rocket

    https://mp.weixin.qq.com/s/Z4JJhZ_jL1lqF1nf_orq9A

     
    简单介绍Timer的实现。
     
     
    1. 基本功能
     
    实现定时器的功能。
     
    2. Timer
     
    实现一个静态装入的定时器:
    1) initCount
     
    定时器的初始值,静态配置,不可动态改变。
     
    2) maxInfligh
     
    定时器事件的种类。
     
    3) io
     
    a. start:某个定时器事件需要启动定时器,io.start.bits为这个定时器事件的ID;
    b. stop:某个定时器事件需要停止定时器,io.stop.bits为这个定时器事件的ID;
    c. timeout:输出定时器是否超时,以及超时的定时器事件的ID;
     
    4) inflight
     
    记录各个定时器事件是否需要启动定时器。
     
    5) countdown
     
    倒数计数器。
     
    6) active
     
    定时器是否是激活状态,即正在倒计时的状态。
    只需要有一个定时器事件要求开始计时,定时器即处于激活状态。
     
    7) 倒计时
     
    当定时器激活时,不停的进行倒计时:
     
    8) 开始计时
     
    当io.start.valid为真时,标记该定时器事件对应的inflight比特为真,并且把countdown置位初始值,开始倒计时。
     
    9) 停止计时
     
    当io.stop.valid为真时,标记该定时器事件对应的inflight比特为假。这个动作不一定会停止定时器。
     
    10) 超时
     
    当定时器处于激活状态,并且countdown倒数到0时,定时器超时。
     
    11) assert
     
    意思是说:不能停止没有事先要求启动的定时器事件。
     
    个人认为,针对逆否命题进行assert比较好理解,即:
     
     
    3. SimpleTimer
     
    简单的定时器。不考虑定时器事件,只提供一个开始和停止控制。
     
    1) io
     
    a. start:开始定时器;
    b. stop:停止定时器;
    c. timeout:定时器是否超时;
     
    2) 开始计时
     
    当io.start为真时,定时器激活,开始从initCount - 1倒计时。
     
    3) 停止计时
     
    当io.stop为真时,定时器转入未激活状态。
     
    4) 超时
     
     
    4. DynamicTimer
     
    定时时长可以动态输入的定时器:
     
    1) io
     
    其中,period为输入的定时时长。
     
    2) 开始计时
     
     
    3) 停止计时
     
    要求停止,或者倒数到0时,停止计时。
     
    4) 倒计时
     
     
    5) 超时
     
     
    5. 附录
     
  • 相关阅读:
    scrapy 断点续爬
    Tornado
    python 列表去重的几种方法
    安装Mysql-python报错EnvironmentError: mysql_config not found
    安装setuptools 报错缺少zlib
    微信小程序-if条件渲染
    微信小程序-遍历列表
    微信小程序-数据绑定
    超强过滤器
    如何在tomcat安装部署php项目
  • 原文地址:https://www.cnblogs.com/wjcdx/p/10992225.html
Copyright © 2011-2022 走看看