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

【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.dtcms.com/a/305130.html

相关文章:

  • 深入解析RocksDB的MVCC和LSM Tree level
  • 基于springboot/java/VUE的旅游管理系统/旅游网站的设计与实现
  • USB Type-C PD协议一文通
  • mangoDB面试题及详细答案 117道(026-050)
  • CVE-2021-1675
  • 【C语言进阶】题目练习
  • docker部署zingerbee/netop 轻量级网络流量监控工具
  • 河南萌新联赛2025第(二)场:河南农业大学(补题)
  • 高端医疗超声AFE模拟前端应用
  • 机器学习之线性回归——小白教学
  • 关于为什么写分配法搭配写回法?非写分配法搭配全写法?
  • python基础:request请求查询参数的基本使用、携带请求参数的两种方法、 json串和python中数据类型转化、 post模拟登录
  • 全方位Python学习方法论:从入门到精通的系统指南
  • GB/T 4706.1-2024 家用和类似用途电器的安全 第1部分:通用要求 与2005版差异(21)
  • 【Spring】日志级别的分类和使用
  • 计算机视觉-局部图像描述子
  • 代理IP轮换机制:突破反爬虫的关键策略
  • AI驱动的知识管理新时代:释放组织潜力的关键武器
  • win10 环境删除文件提示文件被使用无法删除怎么办?
  • MPLS 专线网络
  • 字符集学习
  • 实现多路标注截图
  • GESP2025年6月认证C++七级( 第三部分编程题(1)线图)
  • Spring Boot中的this::语法糖详解
  • Spring与数学的完美碰撞
  • 偏二甲肼气体浓度报警控制系统
  • 自适应双门限的能量检测算法
  • Python算法实战:从排序到B+树全解析
  • TDengine:用AI改变数据消费范式
  • linux命令ps的实际应用