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

协同线程与协同函数

Lua中有一种特殊的线程,称为coroutine,协同线程,简称协程。

其可以在运行时暂停执行,然后转去执行其他线程,然后可以返回再继续执行没完成的内容。即可以“走走停停,停停走走”。

任意时刻只会有一个协程执行,不会出现多个协程同时执行的情况。

协同线程的类型为thread,其启动、暂停、重启等,通过函数来控制,具体方法如下:

-- 创建一个协同线程实例 co = coroutine.create(function(a,b) print(a,b,a+b) -- 获取正在运行的协同线程实例 local co = coroutine.running() -- 输出协同线程实例的状态 print(coroutine.status(co)) -- 将当前协同线程挂起 coroutine.yield() print("协同线程恢复了") end) -- 启动协同线程 coroutine.resume(co,1,2) -- 输出协同线程的状态 print("主线程查看协同线程状态:"..coroutine.status(co)) -- 恢复协同线程的运行,不传后面的参数了,因为协同线程已经挂起了 coroutine.resume(co) -- 输出协同线程的状态 print("主线程查看协同线程状态:"..coroutine.status(co))

运行结果如下:

协同函数

协同线程可以单独创建执行,也可以通过协同函数调用启动执行。

使用coroutine的wrap()函数创建的就是协同函数,类型为function。

协同函数的调用会启动其内置的协同线程。

-- 创建一个协同函数 co = coroutine.wrap(function(a,b) print(a,b,a+b) local co = coroutine.running() print(coroutine.status(co)) coroutine.yield() print("协同线程恢复了") print(a,b,a+b) end) -- 调用协同函数,启动协同线程 co(1,2) co()

运行结果如下

文件IO

文件IO的函数分为两类:静态函数与实例 函数。

静态函数:通过io.xxx()方式对文件进行操作。

http://www.gsyq.cn/news/1590818.html

相关文章:

  • 【题目讲解】 算法系列之定长类滑动窗口解析(上)
  • Kubernetes Pod 完全指南:从入门到实战,轻松掌握容器编排核心
  • V 语言精选资源库
  • 分类评估指标实战指南:从混淆矩阵到业务价值落地
  • 截断流Witt代数的模表示:基于p-特征与高度的简单模分类与构造
  • 抖音无水印视频下载终极指南:3分钟搞定批量下载与智能管理
  • Apple Silicon Mac 电池健康管理终极指南:开源架构设计与实现原理
  • GraalVM原生镜像构建实战:十分钟让你的Java应用启动速度快100倍
  • 2026年国内口碑较好的工艺品设计平台有哪些值得关注
  • VMware虚拟机导出OVF:绕过ovftool命令行的3种GUI替代方案,小白也能10分钟完成合规打包
  • Spring Cloud 服务注册与发现原理
  • CLIP实战避坑指南:图文对齐、零样本迁移与生产部署关键断点
  • 如何快速掌握LangFlow:3步搞定AI应用可视化开发
  • 机器学习模型评估实战:从accuracy陷阱到AUC-ROC与PR曲线深度解析
  • 从脱靶量最小化到杀伤概率最大化:导弹制导新范式解析
  • 3个核心技术突破:Windows系统下LG Ultrafine显示器亮度控制终极方案
  • 注入燃料——Entity Framework Core 与 Code First 实战
  • AI 建议直接升级依赖版本,为什么编译通过后仍可能在运行时 `NoSuchMethodError`
  • 如何正确地“拷贝”一个对象?(深拷贝与浅拷贝)
  • Navicat密码查看工具:终极解决方案帮你找回忘记的数据库密码
  • GEO优化公司能解决企业的什么问题?从AI搜索流量到品牌认知的全面解读
  • AI写论文神器来袭!4款AI论文生成工具,让论文写作更高效!
  • Github 开源社区中 AMD ROCm 相关项目的筛选技巧
  • Gophish管理员密码丢失?SQLite数据库哈希重置实战指南
  • 中兴光猫超级管理员权限获取完整指南:3步开启工厂模式
  • Buzz:终极开源语音转录工具,打造高效音频处理工作流
  • 【JAVA毕设源码分享】基于SpringBoot技术的防盗门进销存管系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 告别下载烦恼:3步解锁全网视频音频资源的终极解决方案
  • Go语言的runtime.SetBlockProfileRate阻塞剖析数据收集与分析工具集成
  • Java CompletableFuture 的异步流设计