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. 附录
     
  • 相关阅读:
    centos crash debug
    go get Unknown SSL protocol error in connection to gopkg.in
    Tensorflow serving with Kubernetes
    Spring 集成 Swagger UI
    Docker Registry V2 Garbage Collection
    Docker Registry V2 with Nginx
    Zabbix磁盘性能监控
    Zabbix CPU utilization监控参数
    Windows挂载Gluster复制卷
    Redis持久化存储(三)
  • 原文地址:https://www.cnblogs.com/wjcdx/p/10992225.html
Copyright © 2011-2022 走看看