shared_resource.lua 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. --[[
  2. @module shared_resource
  3. @summary 共享资源访问演示
  4. @version 1.0
  5. @date 2025.08.15
  6. @author 朱天华
  7. @usage
  8. 本文件为shared_resource应用功能模块,用来演示多个task访问共享资源的功能,核心业务逻辑为:
  9. 1、创建一个全局共享变量global_shared_variable,变量值初始化为0;
  10. 2、创建两个task,task1和task2;
  11. 2、在task1的任务处理函数中:
  12. (1) 每隔1秒,执行一次for循环
  13. (2) 循环体内循环100次,每次将全局共享变量global_shared_variable的值加1
  14. 3、在task2的任务处理函数中,每隔300毫秒,task2的计数器加1,并且通过日志打印task2计数器的值;
  15. 本文件没有对外接口,直接在main.lua中require "task_scheduling"就可以加载运行;
  16. ]]
  17. -- 全局共享变量,初始值为0
  18. local global_shared_variable = 0
  19. -- 第一个task的任务处理函数
  20. local function task1_func()
  21. while true do
  22. log.info("task1_func", "for循环前,全局共享变量的值:", global_shared_variable)
  23. for i=1,100 do
  24. global_shared_variable = global_shared_variable + 1
  25. -- sys.wait(5)
  26. end
  27. log.info("task1_func", "for循环后,全局共享变量的值:", global_shared_variable)
  28. sys.wait(1000)
  29. end
  30. end
  31. -- 第二个task的任务处理函数
  32. local function task2_func()
  33. while true do
  34. log.info("task2_func", "for循环前,全局共享变量的值:", global_shared_variable)
  35. for i=1,100 do
  36. global_shared_variable = global_shared_variable + 1
  37. -- sys.wait(5)
  38. end
  39. log.info("task2_func", "for循环后,全局共享变量的值:", global_shared_variable)
  40. sys.wait(1000)
  41. end
  42. end
  43. -- 创建并启动第一个task
  44. -- 运行这个task的任务处理函数为task1_func
  45. sys.taskInit(task1_func)
  46. -- 创建并启动第二个task
  47. -- 运行这个task的任务处理函数为task2_func
  48. sys.taskInit(task2_func)