一,sys库接口函数
- sys.wait(ms) ~Task任务延时函数,只能用于任务函数中
- sys.waitUntil(id, ms) ~Task任务的条件等待函数(包括事件消息和定时器消息等条件),只能用于任务函数中。
- sys.waitUntilExt(id, ms) ~Task任务的条件等待函数扩展(包括事件消息和定时器消息等条件),只能用于任务函数中。
- sys.taskInit(fun, …) ~创建一个任务线程,在模块最末行调用该函数并注册模块中的任务函数,main.lua导入该模块即可
- sys.timerStop(val, …)~关闭定时器
- sys.timerStopAll(fnc)~关闭同一回调函数的所有定时器
- sys.timerStart(fnc, ms, …)~开启一个定时器
- sys.timerLoopStart(fnc, ms, …)~开启一个循环定时器
- sys.timerIsActive(val, …)~判断某个定时器是否处于开启状态
- sys.subscribe(id, callback)~订阅消息
- sys.unsubscribe(id, callback)~取消订阅消息
- sys.publish(…)~发布内部消息,存储在内部消息队列中
- sys.run()~run()从底层获取core消息并及时处理相关消息,查询定时器并调度各注册成功的任务线程运行和挂起
具体函数使用参考官方文档
二,实验代码
-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "Test"
VERSION = "1.0.0"
-- 打印版本信息
log.info("main", PROJECT, VERSION)
-- 一定要添加sys.lua !!!!
sys = require("sys")
--5秒后执行某函数,可以在后面传递参数
sys.timerStart(log.info,5000,"5s timer")
--3秒后执行某函数,可以在后面传递参数
sys.timerStart(log.info,3000,"3s timer")
--每秒执行,永久循环,返回定时器编号
local loopId = sys.timerLoopStart(log.info,1000,"1s loop timer")
--第一个任务
sys.taskInit(function()
while true do
sys.waitUntil(loopId, 2000) --等待2000ms
log.info("task1","wow")
sys.wait(1000) --延时1秒,这段时间里可以运行其他代码
end
end)
--第二个任务
sys.taskInit(function()
sys.wait(10000) --延时10秒,这段时间里可以运行其他代码
sys.timerStop(loopId)--停止永久循环定时器
while true do
log.info("task2","wow")
sys.wait(500) --延时0.5秒,这段时间里可以运行其他代码
end
end)
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!
三,打印分析