任务模块

函数:task.add() 添加任务队列

函数说明 : 将一个函数添加至任务队列。
函数方法 : task.add(任务函数 func);
返回值 : 任务 ID

参数类型说明
funcfunction自定义函数
返回值类型说明
IDthread任务ID

函数:task.loop() 执行任务队列

函数说明 : 执行任务队列。
函数方法 : task.loop(主任务ID);

参数类型说明
IDthread主任务ID

函数:task.yield() 切换任务

函数说明 : 切换任务。
函数方法 : task.yield();

函数:task.sleep() 延时并切换任务

函数说明 : 与task.yield()功能相同,并带延迟功能,可代替sys.sleep()来达到每次延迟的时候切换任务
函数方法 : task.sleep(时间 ms);
返回值 : 无

参数类型说明
msnumber脚本暂停执行的时间,单位为毫秒

教程:使用方法

-- 主任务
function task_main()
  for i = 1, 5 do
    sys.log("main")
    task.sleep(1000)
    sys.log("main2")
  end
end

-- 任务1
function task_1()
  while true do
    sys.log("task 1")
    task.sleep(1000)
  end
end

-- 任务2
function task_2()
  sys.log("task 2")
end

function main()
  main = task.add(task_main)
  task.add(task_1)
  task.add(task_2)

  -- main任务结束即为结束
  task.loop(main)
  sys.log("主任务结束")
end

执行结果:

main
task 1 --task_main中遇到第一个task.sleep会切换到task_1
task 2 --task_1中遇到第一个task.sleep会切换到task_2
main2  --task_2执行完毕会回到task_main(由于task_2执行完毕以后不会出现task_2)
main
task 1
main2
main
task 1
main2
main
task 1
main2
main
task 1
main2
主任务结束

task_main相当于main主函数,这里写业务的主流程
task_1,task_2可用于检测程序是否闪退,检测弹出窗口等操作
注:以上用到的函数名可自定义任意名字,队列执行顺序按照task.add的添加顺序执行