详解鸿蒙仓颉开发语言中的计时器

今天又到了大家喜闻乐见的科普环节,也可以说是踩坑环节,哈哈哈。今天聊一聊仓颉开发语言中的计时器,这部分可老有意思了。

为什么这么说呢,因为关于仓颉的计时器你几乎搜不到任何的文档,也没有相关的代码提示,可以说是一写一个不吱声。

但是它还是被幽蓝君发现了蛛丝马迹,今天就把它分享给大家。

仓颉的计时器藏在std.sync包里,名字叫Timer,但是使用时只导入Timer包还不够,我们需要导入这几个模块:

import std.time.*
import std.sync.Timer
import std.sync.CatchupStyle

计时器的写法也是别出心裁,它有几种模式,下面为大家一一介绍

Timer.after(Duration.minute, { => 
    AppLog.info('这是after计时器'); 
    return Duration.second
    })

这行代码的意思是,计时器在一分钟以后执行,然后每分钟执行一次App.info打印。这个模式比较奇怪,它的执行间隔在执行方法中返回。

另一个比较奇怪的地方不知道大家有没有发现,计时器中的延迟时间和执行间隔这两个时间参数使用的是Duration类型的枚举,就是说只能使用它设定好的几个值,目前给出的时间值有Zero、second、minute、hour等,可以看到都是时间整数,你如果想要两秒执行一次,或者是二分之一秒执行一次大概是不行的。

Timer.once(Duration.minute,{=> 
  AppLog.info('这是once计时器');
  })

这种模式大家应该一眼就能看出来,这是只执行一次的计时器,延迟时间是一分钟后。

Timer.repeat(Duration.Zero, Duration.second, {=> 
  AppLog.info('这是repeat计时器'); 
  }, style: CatchupStyle.Skip)

repeat是重复性执行的计时器,Duration.Zero是延迟执行的时间,Duration.second是执行的间隔,这里出现了新的参数style,它的名字叫追平策略,官方给出的解释是:当 Task 执行时间过长时,后续任务执行时间点可能发生延迟,不同的追平策略适用于不同的场景。

Timer.repeatDuring(period: Duration, delay: Duration, interval: Duration, task: () -> Unit, style: CatchupStyle)

这个计时器和上面的repeat类似,它多了一个参数period,意思是重复周期的最大持续时间。类似的还有repeatTimes,它指定了任务的最大执行次数:

Timer.repeatTimes(count: Int64, delay: Duration, interval: Duration, task: () -> Unit, style: CatchupStyle)

以上就是关于仓颉开发语言中计时器的详细内容,感谢阅读,再次祝大家假期愉快。#HarmonyOS语言##仓颉##购物#

#harmonyos#
全部评论

相关推荐

07-15 20:43
门头沟学院 Java
mysql mvccmvcc允许多个事务同时读取同一行数据。做到了读读并行,读写并行。它是通过read view实现的,可看做是数据库的一个快照版本。read view有几个重要参数:m_ids:创建read view 时当前数据库活跃事务的id列表。(启动了还未提交的事务)min_trx_id:创建read view时活跃事务的最小id值max_trx_id:创建readview时数据库要分配给下一个事务的id,即m_ids中最大值+1creator_trx_id:创建该read view的事务idinnodb聚集索引记录中会有两个隐藏列:trx_id:一个事务对某条聚集索引记录改动时,会把该事务的id记录在这里roll_pointer:每次改动时会把记录写到undo日志中,本列存的是指向旧版本记录的指针。如下图,当隐藏列trx_id的值小于read view的min_trx_id,说明这个版本的数据是在readview创建之前就提交了,因此该版本的记录对当时事务可见。当大于max_trx_id时说明这个版本的记录是在readview创建后事务才提交的,因此对当前事务不可见如果再min和max之间,需要判断trx_id在不在m_ids中,如果在且当trx_id等于readview的creator_id时可见,因为是当前事务创建的。如果在且不想等,说明生成该版本的事务还活跃着并且不是当前事务创建的,该版本记录对当前事务不可见。如果不在m_ids中说明生成该版本的事务已经提交,该版本记录对当前事务可见。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务