广州大彩串口屏论坛_大彩开发者交流论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 954|回复: 0

携程coroutine(伪多线程)方式

[复制链接]

61

主题

221

帖子

2783

积分

版主

大彩爱好者Q群14769485

Rank: 7Rank: 7Rank: 7

积分
2783
QQ
发表于 2025-2-18 22:17:45 | 显示全部楼层 |阅读模式
本帖最后由 小逸老师 于 2025-2-18 22:26 编辑

lua本身不支持多线程,但是支持coroutine携程(伪多线程),具体函数如下:
方法
描述
coroutine.create()创建 coroutine,返回 coroutine, 参数是一个函数,当和 resume 配合使用的时候就唤醒函数调用
coroutine.resume()重启 coroutine,和 create 配合使用,可以传递任何类型的参数给create参数中的函数接收
coroutine.yield()挂起 coroutine,将 coroutine 设置为挂起状态,这个和 resume 配合使用能有很多有用的效果
coroutine.status()查看 coroutine 的状态
注:coroutine 的状态有三种:dead,suspended,running,具体什么时候有这样的状态请参考下面的程序
coroutine.wrap()创建 coroutine,返回一个函数,一旦你调用这个函数,就进入 coroutine,和 create 功能重复
coroutine.running()返回正在跑的 coroutine,一个 coroutine 就是一个线程,当使用running的时候,就是返回一个 coroutine 的线程号
使用起来虽然没有多线程好用,但是在某些特殊场合用一下还是挺不错的。

使用方式:
1、先定义一个或多个变量作为携程的句柄
local t1

2、定义一个函数作为携程中的事件。
function abc(data)
end

3、在屏幕初始化中使用
t1=coroutine.create(abc)--创建携程、将abc的函数作为参数提交给携程用于携程事件运行

4、在需要的地方启用携程,例如按钮按下的事件中等等
coroutine.resume(abc,"启动携程")--启动携程并传递字符串参数(需要和create配合使用,如果停止了携程后再次启动时需要再执行第3部create)

备注:不再使用后
coroutine.yield()--暂停携程
大彩爱好者Q群14769485
点我下载→TFT【易模块】封装好的函数库
点我下载→TFT屏可中文lua编辑器【好用】
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|广州大彩串口屏论坛_大彩开发者交流论坛

GMT+8, 2025-4-5 07:36 , Processed in 0.055223 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表