前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Lua⭐️协同函数

Lua⭐️协同函数

作者头像
星河造梦坊官方
发布于 2024-08-15 07:26:49
发布于 2024-08-15 07:26:49
12600
代码可运行
举报
运行总次数:0
代码可运行

取得协同函数的返回值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--取得协同函数的返回值
co=coroutine.create(
	function (a,b)
		print(a+b)
		print(a-b)
		coroutine.yield(a*b+1,a-1)
		print("hello")

		return a
	end
)

--第一个数永远是是否启动(返回truefalse),第二个数则为函数return返回值
--无法取得协同之后return的值,但可以在yield里面定义输出的值
--调用coroutine.resume(),不必再次赋值,即可将挂起的协同函数继续往下运行
res1,res2,res3,res4=coroutine.resume(co,10,40)

print(res1,res2,res3,res4)

print("next")

coroutine.resume(co)

coroutine的状态

coroutine.status()

查看coroutine的状态 注:coroutine的状态有三种:dead(运行完毕),suspend(暂停状态),running(正在运行),具体什么时候有这样的状态请参考下面的程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--取得协同函数的返回值
co=coroutine.create(
	function (a,b)
		print(a+b)
		print(coroutine.running())
		print(a-b)
		coroutine.yield(a*b+1,a-1)
		print("hello")

		return a
	end
)

print(coroutine.running())
res1,res2,res3,res4=coroutine.resume(co,10,40)

coroutine.resume(co)
print(coroutine.running())




>lua -e "io.stdout:setvbuf 'no'" "lua.lua" 
nil
50
thread: 00A6D200
-30
hello
nil
>Exit code: 0

大家还有什么问题,欢迎在下方留言!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Lua:协程,coroutine.create,coroutine.resume, coroutine.yield
http://cloudwu.github.io/lua53doc/manual.html#2.6 Lua 支持协程,也叫 协同式多线程。 一个协程在 Lua 中代表了一段独立的执行线程。 然而,与多线程系统中的线程的区别在于, 协程仅在显式调用一个让出(yield)函数时才挂起当前的执行。 调用函数 coroutine.create 可创建一个协程。 其唯一的参数是该协程的主函数。 create
立羽
2023/08/24
2670
挑战一晚上从零入门lua语言,直接对标Python快速上手
缘起:项目要用。 学习时间:懒,所以速战速决吧。 学习方法:直接对标Python。
看、未来
2021/12/01
1.5K0
挑战一晚上从零入门lua语言,直接对标Python快速上手
lua--协程、异常处理、面向对象
协程是单核的,是一个线程下执行的,所以每一时刻只会有一个协程在运行。线程一般由cpu调度,协程由用户调用
aruba
2022/06/27
6930
lua--协程、异常处理、面向对象
【Lua】协程
从多线程的角度看,协程(Coroutine)与线程(thread)类似:协程是一系列的可执行语句,拥有自己的栈、局部变量和指令指针,同时协程又与其它协程共享全局变量和其它几乎一切资源。 线程和协程的主要区别: 一个多线程程序可以同时并行运行多条线程,而协程却需要彼此协作地运行,即在任意时刻只能有一个协程运行,且协程的切换是在用户态手动控制的,只有当正在运行的协程显示的要求被挂起(suspend)时,其执行才会暂停。
六月丶
2022/12/26
6570
producer
在这个示例中,我们定义了两个函数:producer和consumer。producer函数是一个生产者,它生成一系列数字并使用coroutine.yield挂起。consumer函数是一个消费者,它通过调用coroutine.resume来消费产品。
Yolo-Yolo
2024/12/03
870
producer
代码片段|Lua使用协程制作定时器
Lua 中的协程(coroutine)是一种轻量级的线程,它们共享同一个全局状态,但拥有独立的栈空间。协程允许在 Lua 中实现非阻塞的多任务处理,而无需操作系统的线程调度。这使得协程非常适合用于实现像定时器、网络请求、异步 I/O 等场景。
keyle
2024/11/01
2120
代码片段|Lua使用协程制作定时器
coroutine
下面是一个使用 coroutine.wrap 的完整示例代码,它演示了如何创建和使用协同程序:
Yolo-Yolo
2024/12/11
740
coroutine
Lua基础教程2(长文预警)
这一篇记录一些关于Lua的更深入一些的东西主要是table的使用。但是不涉及IO,Debug,垃圾回收,OOP,数据库访问。这些东西我觉得可以单独放在一个专题写。
keyle
2024/11/01
1120
Lua基础教程2(长文预警)
lua语言:类型,基本语法,函数
两个取值 false 和 true。但要注意 Lua 中所有的值都可以作为条件。在控制结构的条 件中除了 false 和 nil 为假,其他值都为真。所以 Lua 认为 0 和空串都是真。
立羽
2023/08/24
5240
coroutine
以下是一个简单的 Lua 脚本,演示了如何使用协同程序来实现一个简单的任务队列处理器。
Yolo-Yolo
2024/12/10
560
coroutine
lua学习笔记
最重要的当然是工作原因,最近有个项目是相关于游戏服务器的,而用的框架是skynet,用的语言是lua。
用户7962184
2020/11/20
1K0
工具| 诸神之眼nmap定制化之并发处理
当我们使用nmap来进行大规模探测的时候,速度和准确度是摆在我们面前的两个问题,这时需要考虑到nmap的并发处理能力。 0x01 nmap本身的并发执行 相关参数 -T<0-5> Set timing template (higher is faster) --min-hostgroup/max-hostgroup <size> 并行主机扫描组大小 。 将多个目标IP地址分成扫描组,然后在同一时间对一个扫描组进行扫描。 hostgroup代表了一个扫描组。 --min-hostgroup 一个扫描组的下
漏斗社区
2018/03/28
3K0
工具| 诸神之眼nmap定制化之并发处理
lua
数学库由算术函数的标准集合组成,比如三角函数库(sin, cos, tan, asin, acos, etc.), 幂指函数(exp, log, log10),舍入函数(floor, ceil)、max、min,加上一个变量 pi。数学 库也定义了一个幂操作符(^)。 所有的三角函数都在弧度单位下工作。(Lua4.0 以前在度数下工作。)你可以使用 deg 和 rad 函数在度和弧度之间转换。
radaren
2018/08/28
2.3K0
利用LUA协程实现FUTURE模式
1. Future模式: 参见 http://www.cnblogs.com/zhiranok/archive/2011/03/26/Future_Pattern.html 使用future的好处是即利用了异步的并行能力,又保证主逻辑串行执行,保持简单。 2. Lua 协程 sina Timyang 的介绍 http://timyang.net/lua/lua-coroutine/ lua coroutine 通过create创建一个伪线程,该“线程”通过yield可以挂起自己,通过调用resume可以使该
知然
2018/03/09
2.2K0
破解 Kotlin 协程 番外篇(2) - 协程的几类常见的实现
前面一篇文章我们大概讨论了协程是怎么一回事,也举了一些例子,不过整体上覆盖的细节比较少。这篇文章我们按照协程的经典论文 “Revisiting Coroutines” 的思路展开,详细的讨论下协程究竟是怎样的存在。当然由于涉及语言较多,个人水平有限,如有不恰当之处,欢迎大家指正。
bennyhuo
2020/02/20
1.6K0
Lua热更新
此文章部分内容和思维导图来源于唐老狮相关Lua课程,通过Vistual Studio Code语法测试,如有问题,请在以下留言
七鳄不是鳄
2023/02/27
3.6K0
Lua热更新
openresty源码剖析——lua代码的执行
上一篇文章中(https://cloud.tencent.com/developer/article/1037840)我们讨论了openresty是如何加载lua代码的 那么加载完成之后的lua代码又是如何执行的呢 ##代码的执行  在init_by_lua等阶段  openresty是在主协程中通过lua_pcall直接执行lua代码 而在access_by_lua  content_by_lua等阶段中,openresty创建一个新的协程,通过lua_resume执行lua代码 二者的区别在于能否执行n
magicsoar
2018/02/06
2.5K0
Lua 5.1 参考手册
Lua 是一个扩展式程序设计语言,它被设计成支持通用的过程式编程,并有相关数据描述的设施。 Lua 也能对面向对象编程,函数式编程,数据驱动式编程提供很好的支持。 它可以作为一个强大、轻量的脚本语言,供任何需要的程序使用。 Lua 以一个用 clean C 写成的库形式提供。(所谓 Clean C ,指的 ANSI C 和 C++ 中共通的一个子集)
sunsky
2020/08/20
4.1K0
Python基础11-迭代器,生成器
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
2860
Python基础11-迭代器,生成器
每天3分钟,重学ES6-ES12(十五)异步代码处理方案
持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第27天,点击查看活动详情
虎妞先生
2022/09/19
4180
相关推荐
Lua:协程,coroutine.create,coroutine.resume, coroutine.yield
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验