obsidian/笔记文件/2.笔记/定时回调系统_第三章.md

82 lines
2.1 KiB
Markdown
Raw Permalink Normal View History

2025-03-26 00:02:56 +08:00
把相关的方法从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]]