当前位置: 首页 > backend >正文

【Lua】题目小练4

-- 题目 :协程调度器

-- 要求:

-- 实现一个简单的“任务调度器”,可以注册多个协程任务,并轮询执行,直到所有任务都完成。

local Scheduler = {}
function Scheduler.new()local self = {corTable = {}}function self:addTask(func)local co = coroutine.create(func)table.insert(self.corTable,co)endfunction self:run()while #self.corTable > 0 dolocal i = 1while i <= #self.corTable do  local co = self.corTable[i]local status, val = coroutine.resume(co)if not status thenprint("任务执行出错" .. tostring(co))table.remove(self.corTable, i) --移除元素后,后面的协程会往前移动,因此不用进行i的累加elseif coroutine.status(co) == "dead" thenprint("协程输出:"..tostring(val))table.remove(self.corTable, i)elsei = i + 1end     endendprint("所有的任务都已执行完成!")endreturn self
endlocal s = Scheduler.new()s:addTask(function()for i = 1, 3 doprint("任务1:第"..i.."步")coroutine.yield("暂停1")endend
)s:addTask(function()print("任务2")end
)s:run()
http://www.xdnf.cn/news/16566.html

相关文章:

  • 【保姆级 - 大模型应用开发】DeepSeek R1 本地部署全攻略:Ollama + vLLM + PyTorch 多选方案
  • 【图像处理基石】如何对遥感图像进行实例分割?
  • 【LeetCode 热题 100】34. 在排序数组中查找元素的第一个和最后一个位置——二分查找
  • 宇树 G1 部署(九)——遥操作控制脚本 teleop_hand_and_arm.py 分析与测试部署
  • Go 客户端玩转 ES|QL API 直连与 Mapping Helpers 实战详解
  • 11、read_object_model_3d 读取点云
  • 预装Windows 11系统的新电脑怎么跳过联网验机
  • 预过滤环境光贴图制作教程:第四阶段 - Lambert 无权重预过滤(Stage 3)
  • 三、Linux用户与权限管理详解
  • Redis内存使用耗尽情况分析
  • 编辑距离:理论基础、算法演进与跨领域应用
  • Windows使用Powershell自动安装SqlServer2025服务器与SSMS管理工具
  • css3之三维变换详说
  • Qt 多线程界面更新策略
  • 如何在Windows操作系统上通过conda 安装 MDAnalysis
  • 激光雷达/相机一体机 时间同步和空间标定(1)
  • 自然语言处理NLP(3)
  • leetcode 74. 搜索二维矩阵
  • 柔性生产前端动态适配:小批量换型场景下的参数配置智能切换技术
  • 汇总10个高质量免费AI生成论文网站,支持GPT4.0和DeepSeek-R1
  • cpolar 内网穿透 ubuntu 使用石
  • 2025年06月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • go install报错: should be v0 or v1, not v2问题解决
  • 【自制组件库】从零到一实现属于自己的 Vue3 组件库!!!
  • P2910 [USACO08OPEN] Clear And Present Danger S
  • 四、Linux核心工具:Vim, 文件链接与SSH
  • 永磁同步电机无速度算法--静态补偿电压模型Harnefors观测器
  • 人工智能技术革命:AI工具与大模型如何重塑开发者工作模式与行业格局
  • Linux 完整删除 Systemd 服务的步骤
  • redis得到shell的几种方法