obsidian/笔记文件/2.笔记/定时回调系统_第三章.md
2025-03-26 00:02:56 +08:00

2.1 KiB
Raw Blame History

把相关的方法从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