Rocket - util - Timer

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. 附录

原文地址:https://www.cnblogs.com/wjcdx/p/10992225.html

时间: 2024-10-06 08:53:16

Rocket - util - Timer的相关文章

java.util.Timer类似于闹钟定时做任务

在web中实现任务计划,相当于实现闹钟的功能,要完成2个步骤: 1.定时器的设置: 2.对这个定时器的启动运行和停止进行实时监听 java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks 一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内,TimerTask一般是以匿名类方式创建. Timer是一种线程设施,用于安排以后在后台线程执行的任务,可安排任务执行一次,或者定期重复执行,可以看成一个定时器,可调度TimerTas

定时任务,客户页面操作,使用java.util.timer(要求时间精确度不高的定时任务)

定时任务,客户页面操作,使用java.util.timer,因为@schedule 注解中定时的时间不能在不启动项目情况下修改. timer.cancel()任务队列全部移除,task.cancel()只移除队列中的一个任务. 页面操作定时任务,传递参数(访问任务接口URL和对应参数),修改timer 中Task,修改需要先移除Task.cancel(). 注意timer只能有一个对象,因为多个就会造成多线程定时任务(多线程需要保证每个队列timer中任务不重复). 好了,不多说 上代码:这里数

细说java.util.Timer

Timer是用于管理在后台执行的延迟任务或周期性任务,其中的任务使用java.util.TimerTask表示.任务的执行方式有两种: 按固定速率执行:即scheduleAtFixedRate的两个重载方法 按固定延迟执行:即schedule的4个重载方法 具体差别会在后面详细说明. 我们要实现一个定时任务,只需要实现TimerTask的run方法即可.每一个任务都有下一次执行时间nextExecutionTime(毫秒),如果是周期性的任务,那么每次执行都会更新这个时间为下一次的执行时间,当n

java.util.Timer简介

Timer是用于管理在后台执行的延迟任务或周期性任务,其中的任务使用java.util.TimerTask表示.任务的执行方式有两种: 按固定速率执行:即scheduleAtFixedRate的两个重载方法按固定延迟执行:即schedule的4个重载方法具体差别会在后面详细说明. 我们要实现一个定时任务,只需要实现TimerTask的run方法即可.每一个任务都有下一次执行时间nextExecutionTime(毫秒),如果是周期性的任务,那么每次执行都会更新这个时间为下一次的执行时间,当nex

Rocket - util - AsyncQueue

https://mp.weixin.qq.com/s/6McbqOKM4fu4J5vdpZvxKw 简单介绍异步队列(AsyncQueue)的实现. ?? 0. 异步队列 异步队列的两端分属不同的时钟域,拥有各自的复位逻辑. 异步队列用于存值的一端为上游端(source),用于取值的一端为下游端(sink). 1. AsyncQueueParams ?? 异步队列的参数,包含如下几项: a. depth 队列深度,表示队列可以存储几个元素: b. sync 表示流水线的级数. c. safe 使

Rocket - util - ECC

https://mp.weixin.qq.com/s/yato1PrnHe517J8twgZFOg 介绍ECC(Error Correcting Code/Error Checking and Correcting)的实现框架.不涉及编码的具体实现细节. ?? 1. 码:Code ?? 所有编码(如奇偶校验码.海明码)的抽象父类. 包含如下几个方面: a. 能否检错:canDetect: b. 能否纠错:canCorrect: c. width():输入为数据的宽度,输出为编码后码文的宽度,一般

Rocket - util - MaskGen

https://mp.weixin.qq.com/s/_aJqf1cFJDK5RVRBhxTWOw 介绍MaskGen的实现. ?? 1. 基本介绍 给定总线宽度beatBytes,根据访问的地址(address)和访问的字节数(bytes = 2^lgSize),生成访问字节的掩码. 2. 实现 思路不复杂,写法很难懂.重构一下,提高可读性. 1) 首先忽略groupBy,清爽很多: ?? 2) 把addr_lo重命名为address,把lgSize重命名为size,这样可以很明显的看出来ad

Rocket - util - MultiWidthFifo

https://mp.weixin.qq.com/s/CUnrpyQN5LRBR5bxC5u86A 简单介绍MultiWidthFifo的实现. ?? 1. 基本介绍 实现一个输入宽度为inW,输出宽度为outW,可存n个outW宽度元素的FIFO. a. 如果inW == outW,直接使用队列(Queue)实现: b. 如果inW > outW,则相当于每次输入多个元素,而输出只能有一个元素: c. 如果inW < outW,则相当于每次输出多个元素,而输入只能有一个元素: 需要注意的是,

Rocket - util - Repeater

https://mp.weixin.qq.com/s/xyEq3DgYuf2QuNjssv8pkA 简单介绍Repeater的实现. ?? 1. 基本功能 A Repeater passes it's input to it's output, unless repeat is asserted. When repeat is asserted, the Repeater copies the input and repeats it next cycle. 2. 实现 1) io ?? a.