sys = require("sys")
--第一个任务
sys.taskInit(function()
while true do
log.info("task1","wow")
sys.wait(1000) --延时1秒,这段时间里可以运行其他代码
end)
--第二个任务
sys.taskInit(function()
while true do
log.info("task2","wow")
sys.wait(500) --延时0.5秒,这段时间里可以运行其他代码
end)
sys.run()
log.info("task1","wow")
sys.wait(1000) --延时1秒,这段时间里可以运行其他代码
sys.publish("TASK1_DONE")--发布这个消息,此时所有在等的都会收到这条消息
end)
--第二个任务
sys.taskInit(function()
while true do
sys.waitUntil("TASK1_DONE")--等待这个消息,这个任务阻塞在这里了
log.info("task2","wow")
end)
--第三个任务
sys.taskInit(function()
while true do
local result = sys.waitUntil("TASK1_DONE",500)--等待超时时间500ms,超过就返回false而且不等了
log.info("task3","wait result",result)
end)
--单独订阅,可以当回调来用
sys.subscribe("TASK1_DONE",function()
log.info("subscribe","wow")
end)
sys.run()
log.info("task1","wow")
sys.wait(1000) --延时1秒,这段时间里可以运行其他代码
sys.publish("TASK1_DONE","balabala")--发布这个消息,并且带上一个数据
end)
--第二个任务
sys.taskInit(function()
while true do
local _,data = sys.waitUntil("TASK1_DONE")--等待这个消息,这个任务阻塞在这里了
log.info("task2","wow receive",data)
end)
--第三个任务
sys.taskInit(function()
while true do
local result,data = sys.waitUntil("TASK1_DONE",500)--等待超时时间500ms,超过就返回false而且不等了
log.info("task3","wait result",result,data)
end)
--单独订阅,可以当回调来用
sys.subscribe("TASK1_DONE",function(data)
log.info("subscribe","wow receive",data)
end)
sys.run()
sys.timerStart(log.info,1000,"1s timer")
--之间写个function也行
sys.timerStart(function()
log.info("1s timer function")
end,1000)
--每秒执行,永久循环,返回定时器编号
local loopId = sys.timerLoopStart(log.info,1000,"1s loop timer")
--10秒后手动停止上面的无限循环定时器
sys.timerStart(function()
sys.timerStop(loopId)
log.info("stop 1s loop timer")
end,10000)
sys.run()
param
val 有两种形式
一种是开启定时器时返回的定时器id,此形式时不需要再传入可变参数…就能唯一标记一个定时器
另一种是开启定时器时的回调函数,此形式时必须再传入可变参数…才能唯一标记一个定时器
param
… 可变参数