shared_resource.lua 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. 3、在task1的任务处理函数中:
  12. (1) 每隔1秒,执行一次for循环
  13. (2) 循环体内循环100次,每次将全局共享变量global_shared_variable的值加1
  14. 4、在task2的任务处理函数中:
  15. (1) 每隔1秒,执行一次for循环
  16. (2) 循环体内循环100次,每次将全局共享变量global_shared_variable的值加1
  17. 本文件没有对外接口,直接在main.lua中require "task_scheduling"就可以加载运行;
  18. ]]
  19. -- 全局共享变量,初始值为0
  20. local global_shared_variable = 0
  21. -- 第一个task的任务处理函数
  22. local function task1_func()
  23. while true do
  24. log.info("task1_func", "for循环前,全局共享变量的值:", global_shared_variable)
  25. for i=1,100 do
  26. global_shared_variable = global_shared_variable + 1
  27. -- sys.wait(5)
  28. end
  29. log.info("task1_func", "for循环后,全局共享变量的值:", global_shared_variable)
  30. sys.wait(1000)
  31. end
  32. end
  33. -- 第二个task的任务处理函数
  34. local function task2_func()
  35. while true do
  36. log.info("task2_func", "for循环前,全局共享变量的值:", global_shared_variable)
  37. for i=1,100 do
  38. global_shared_variable = global_shared_variable + 1
  39. -- sys.wait(5)
  40. end
  41. log.info("task2_func", "for循环后,全局共享变量的值:", global_shared_variable)
  42. sys.wait(1000)
  43. end
  44. end
  45. -- 创建并启动第一个task
  46. -- 运行这个task的任务处理函数为task1_func
  47. sys.taskInit(task1_func)
  48. -- 创建并启动第二个task
  49. -- 运行这个task的任务处理函数为task2_func
  50. sys.taskInit(task2_func)