82 lines
2.1 KiB
Markdown
82 lines
2.1 KiB
Markdown
把相关的方法,从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]]
|
||
|