main.lua 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "multitasking"--多任务
  3. VERSION = "1.0.0"--程序版本号
  4. -- 引入必要的库文件(lua编写), 内部库不需要require
  5. sys = require("sys")--引入sys系统调度
  6. --打印一下项目名称
  7. log.info("main", "多任务",PROJECT)
  8. --=============================================================
  9. --烧水的协程
  10. function boil_water()--烧水
  11. while 1 do
  12. log.info("开始烧水")
  13. sys.wait(5000)--烧水5秒后
  14. sys.publish("水烧开了")
  15. log.info("水壶提示并发消息:", "水烧开了!!!")
  16. break
  17. end
  18. end
  19. --=============================================================
  20. --扫地的协程
  21. function sweep_floor()--扫地
  22. while 1 do
  23. local result = sys.waitUntil("水烧开了",1000)--等待超时时间1000ms,超过就返回false而且不等了
  24. if result then
  25. log.info("水烧开了:", "我去关火")
  26. sys.publish("水烧开了,不扫地了去沏茶")
  27. break
  28. else
  29. log.info("水还没烧开:", "我要继续扫地")
  30. end
  31. end
  32. end
  33. --=============================================================
  34. --沏茶的协程
  35. function make_tea()--沏茶
  36. while 1 do
  37. local result = sys.waitUntil("水烧开了,不扫地了去沏茶")--一直等待超,程序阻塞到这里了
  38. if result then
  39. log.info( "收到消息了,可以沏茶了")
  40. end
  41. end
  42. end
  43. --=============================================================
  44. sys.taskInit(boil_water)--这里就是创建了烧水的协程
  45. sys.taskInit(sweep_floor)--这里就是创建了扫地的协程
  46. sys.taskInit(make_tea)--这里就是创建了沏茶的协程
  47. --=============================================================
  48. -- 用户代码已结束---------------------------------------------
  49. -- 结尾总是这一句
  50. sys.run()
  51. -- sys.run()之后后面不要加任何语句!!!!!