lua协程

作者: 周末的游戏之旅 | 来源:发表于2019-09-23 11:36 被阅读0次

Lua中协同程序:意义和Unity中一样
Lua中协同程序的函数被放在coroutine的表中
协同程序状态:挂起、执行、死亡、正常
协程创建后默认为挂起状态

cor = coroutine.create( function() 
    print("111") 
end
)

print(coroutine.status( cor )) --查看协程状态
coroutine.resume(cor) --开始协程
print(coroutine.status( cor )) --查看协程状态

yield 挂起 需要手动启动

local cor = coroutine.create( function()
    for i=1,2 do
        print(i)
        coroutine.yield() --挂起
    end 
end)
coroutine.resume( cor )
print(coroutine.status( cor ))
coroutine.resume( cor )
print(coroutine.status( cor ))

resume 有两个返回值 第一个是协程是否正常执行,第二个是错误信息

local cor = coroutine.create( function()
    error("aaabbb")
end)
local r1,err1 = coroutine.resume( cor )
print(r1)
print(err1)

当程序正常执行时,第二个返回值也可以是yield的值

local cor = coroutine.create( function(a)
    print(a)
    coroutine.yield( 'Young' )
end)
local rr,ee = coroutine.resume( cor,10,20 )
print(rr)
print(ee)

协程传参

local cor = coroutine.create( function(a,b)
    print(a+b)
end)
coroutine.resume( cor,10,20 )

yield 函数也有返回值 ,返回值时resume的第二个参数

local cor = coroutine.create( function(a)
    print(a)
    local c = coroutine.yield( 'Young' )
    print(c)
end)
coroutine.resume( cor,10)
coroutine.resume( cor,"lalala")

yield函数的返回值为resume的第二个参数
resume的返回值为yield的参数

相关文章

  • Lua协程

    先看一段代码 运行结果at coAA -- 1at coBB -- 1at coBB -- 2at coCC --...

  • lua协程

    Lua中协同程序:意义和Unity中一样Lua中协同程序的函数被放在coroutine的表中协同程序状态:挂起、执...

  • Lua协程

    首先了解一下多线程。我们都知道线程——Thread。每一个线程都代表一个执行序列。当我们在程序中创建多线程的时候,...

  • SRS流媒体服务器源码分析(一):Rtmp publish流程

    线程模型 srs使用了state-threads协程库,是单线程多协程模型。这个协程的概念类似于lua的协程,都是...

  • (五)协程 Coroutine

    一、协程的概念 协作程序,解决异步问题 应用层完成调度 常见的支持协程的语言如: lua,C# 二、协程要解决什么...

  • 什么是Coroutines(协程)

    一、什么是Coroutines(协程) 协程是很久之前就提出的一个概念,目前支持协程的语言包括 lua、C#、go...

  • Python协程、yield、yield from

    前言 协程,又称微线程,纤程。英文名Coroutine。最近几年才在某些语言(如Lua)中得到广泛应用! 协程的特...

  • Lua-协程

    简介 示例 参数及返回值 create:返回coroutine,参数是函数 resume:返回bool值 yiel...

  • Lua 协程应用

    即使我死了,埋在土地里,我也要用我腐烂的声带喊出:闲置CPU是可耻。——孔子 进程,线程?并行,并发? 由于单核C...

  • Goroutine 随笔

    很早之前在lua中实现过一版协程,lua的栈是虚拟的,当要切换协程时虚拟栈不需要退栈,只需要从C的栈(物理栈)退出...

网友评论

      本文标题:lua协程

      本文链接:https://www.haomeiwen.com/subject/wswfyctx.html