首页 > 编程语言 >Lua 语法 协同程序

Lua 语法 协同程序

时间:2024-07-28 20:51:01浏览次数:9  
标签:协程 co coroutine -- 语法 Lua 协同程序 print 返回值

协程的创建

lua 协程的类型是 thread(线程)
协程的本质是一个线程对象
关键字:coroutine.create

-- 创建协程
fun = function ()
 print(123)
end

--第一种协程创建方式
co = coroutine.create(fun)
--协程的本质是一个线程对象

--输出类型:地址
print(co)

-- 输出 thread
print(type(co))

--第二种协程创建方式
-- coroutine.wrap()
co2 = coroutine.wrap(fun)

--输出类型:地址
print(co2)

-- 输出 function
print(type(co2))

协程的运行

-- 对应第一种方式的协程
coroutine.resume(co)

-- 对应第二种方式的xiec
co2()

协程的挂起

--定义协程方法
fun2 = function()
	local  i = 1
	while true do 
		print(i)
		i=i+1
		--协程的状态
		print(coroutine.status(co3))
-- 这个函数可以得到当前正在 运行的协程的线程号
		print(coroutine.running())
		--协程挂起函数
		coroutine.yield(i)
	end
end

--创建协程
co3 =coroutine.create(fun2)

--默认第一个返回值 是 协程是否启动成功
--yield里面的返回值

--启动协程获得返回值
isOk, tempI = coroutine.resume(co3)
print(isOk, tempI)


--启动协程获得返回值
isOk, tempI = coroutine.resume(co3)
print(isOk, tempI)

-- 第二种方法创建协程
co4 = coroutine.wrap(fun2)
-- 这种方式的协程调用 也可以有返回值 只是没有默认第一个返回值了
print("返回值"..co4())
print("返回值"..co4())
print("返回值"..co4())

协程的状态

-- coroutine.status(协程对象)
-- dead 结束
-- suspended 暂停
-- running 进行中

print(coroutine.status(co3))
print(coroutine.status(co))

-- 这个函数可以得到当前正在 运行的协程的线程号
		print(coroutine.running())

标签:协程,co,coroutine,--,语法,Lua,协同程序,print,返回值
From: https://www.cnblogs.com/Luo-Xi/p/18328789

相关文章

  • Android.mk语法规则(主要针对C编译)
    参考页面:https://www.jb51.net/program/29533325i.htmhttps://www.cnblogs.com/kn-zheng/p/17005182.htmlAndroid.mk是什么Android.mk是Android工程管理文件,类似于编译文件的说明书,用来向NDK编译系统描述源代码,并将源文件分组为模块(包括静态库、共享库、独立可执行文件)。And......
  • Lua 语法 复杂类型表 字典 , 类,结构体,表的公共操作
    字典字典的本质运用键值对一个键对应一个值和自定义索引表相似定义使用--字典是由键值对构成a={["name"]="洛溪",["age"]=14,["1"]=10}--访问单个变量用中括号填键来访问print(a["name"])print(a["1"])print(a["age"])--还可以类似成员变量的形式得......
  • lua可变参数
    遍历可变参数localfunctionTest1(...)localargCnt=select("#",...)fori=1,argCntdolocalitem=select(i,...)print(i,item)endendTest1(4,5,6) 遍历可变参数方式2localfunctionTest2(...)localargs={...}......
  • 当 Visual Studio 检测到代码没有问题时,无法弄清楚为什么它返回“语法错误”
    fromkivy.appimportAppfromkivy.uix.gridlayoutimportGridLayoutfromkivy.uix.labelimportLabelclasstest(App):defbuild(self):self.window=GridLayout()self.label=Label(text="hello")self.window.add_widge......
  • Lua 语法之迭代器
    迭代器主要是用来遍历表的两个迭代器区别#ipairspairs索引必须数字且连续索引必须数字且连续索引可以随意从1开始到nil从1开始到nil从1开始到无其他索引字符索引不识别字符索引不识别字符索引识别关键字ipairs--#得到长度其实并不准确一般不......
  • python基本语法三天速成系列day1(看完这篇你就会)
    注释注释是代码非常重要的一部分,它的主要作用有:解释代码目的:注释可以说明代码段或函数的目的和功能,帮助其他开发者快速理解代码的意图。复杂逻辑说明:对于复杂的算法或业务逻辑,通过注释可以解释这些逻辑是如何工作的,降低后续维护的难度。提高可读性:良好的注释可以使代码结......
  • Lua 语法_复杂类型表____数组与二维数组
    复杂数据类型Lua所有的复杂类型都是table(表)数组如何用Luatable(表)实现数组--lua表中没有具体的限制可以是数值,字符串,布尔值a={1,2,3,4,"洛溪",true,nil}--Lua中默认索引从1开始0如果没有自定义索引则为空nilprint(a[0])--#号时用的获取长度的关键字--......
  • Python 教程(二):语法与数据结构
    目录前言专栏列表语法特点实例代码基本数据类型变量命名规则赋值动态类型作用域示例代码运算符`list`、`set`和`dict`数据结构区别1.list(列表)2.set(集合)3.dict(字典)总结前言Python是一种计算机编程语言。每种编程语言都有自己的语法规则。在本教程中,我们将学......
  • java 基本语法3
    1.方法的定义格式如:publicstaticvoidadd(intx,inty){returnx+y;}java的方法感觉就是c中的函数,子例程。但java是一个面向对象的语言,它的每一个方法都在类中,其中由于主方法的格式:publicstaticvoidmain(String[]args){},所以他只能调用静态的成员,所以在方法中也应该用......
  • MySQL的DDL和DML操作语法
    一、SQL分类SQL,英文:StructuredQueryLanguage,结构化查询语言。是用于操作关系型数据库的编程语言。SQL定义操作所有关系型数据库的统一标准,可以使用SQL操作所有的关系型数据库管理系统,以后工作中如果使用到了其他的数据库管理系统,也同样的使用SQL来操作。......