定时回调系统_第三章.md 2.1 KB

把相关的方法,从unity里抽象出来,实际上是把Update函数,弄一个while函数实现

可以看到,计时器类,还是时间任务列表,帧任务列表

![[Pasted image 20230817183511.png]]

计时器类里,更新函数,也是类似的逻辑,检测对应的列表

![[Pasted image 20230817183614.png]]

不过,时间上的获取,是有一个新知识点 这个double的数据,指的是现在时间

![[Pasted image 20230817183657.png]]

其中,计算机元年是1970年1月1日0点

![[Pasted image 20230817183754.png]]

对应的就是这个

![[Pasted image 20230817183946.png]]

然后,计算,拿到现在的时间

![[Pasted image 20230817184034.png]]

在添加时间任务的函数里面 AddTimeTask

![[Pasted image 20230817184611.png]]

时间就是调用这个函数获取的

![[Pasted image 20230817184652.png]]

然后,把拿到的时间,跟传参进来的延迟,叠加,就可以加一个时间任务了

![[Pasted image 20230817185723.png]]

这里就是添加任务的相关逻辑,可以看到,是有一个while死循环的函数,去实现update功能的

![[Pasted image 20230817190032.png]]

在Main函数里,调用

![[Pasted image 20230817190142.png]]

运行,可以看到,对应的线程ID,是主线程

![[Pasted image 20230817190212.png]]

也就是对应这里的逻辑

![[Pasted image 20230817190338.png]]

然后,第二个是独立线程的,不同的地方,在于这里多了一个 5 的传参

![[Pasted image 20230817190441.png]]

![[Pasted image 20230817190510.png]]

如果传参不为0,就会另外新加一个计时器,在线程池,延迟5秒开始

![[Pasted image 20230817190526.png]]

![[Pasted image 20230817190548.png]]

第二种方法,也会有,打印线程ID的操作

![[Pasted image 20230817190626.png]]

注释,然后使用第二个

![[Pasted image 20230817190659.png]]

根据上述逻辑,运行,延迟5秒之后,开始打印线程id,可以看到,是用了不同线程的 具体用哪个线程,就是 计算机CPU 自己调度的了

![[Pasted image 20230817190925.png]]