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

82 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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