美文网首页
lua 协同程序(coroutine)

lua 协同程序(coroutine)

作者: 菜鸟的笔记 | 来源:发表于2019-11-11 20:24 被阅读0次

基本语法

方法 描述
coroutine.create() 创建 coroutine,返回 coroutine, 参数是一个函数,当和 resume 配合使用的时候就唤醒函数调用
coroutine.resume() 重启 coroutine,和 create 配合使用
coroutine.yield() 挂起 coroutine,将 coroutine 设置为挂起状态,这个和 resume 配合使用能有很多有用的效果
coroutine.status() 查看 coroutine 的状态。注:coroutine 的状态有三种:dead,suspended,running,具体什么时候有这样的状态请参考下面的程序
coroutine.wrap() 创建 coroutine,返回一个函数,一旦你调用这个函数,就进入 coroutine,和 create 功能重复
coroutine.running() 返回正在跑的 coroutine,一个 coroutine 就是一个线程,当使用running的时候,就是返回一个 corouting 的线程号

注:在任一指定时刻只有一个协同程序在运行

定义一个协同程序

定义 coroutine (方法一:使用 coroutine.create)
coroutineName= coroutine.create(
    function(i)
        print(i);
    end
)
 -- 开启 coroutine
coroutine.resume(coroutineName, 1) 
-- 查看 coroutine 的状态
print(coroutine.status(coroutineName))  
-- 输出结果: 1  .. dead
定义 coroutine (方法二:使用 coroutine.wrap)
coroutineName= coroutine.wrap(
    function(i)
        print(i);
    end
)
 -- 开启 coroutine
coroutineName(1) 
-- 输出结果: 1  
暂停coroutine 使用 coroutine.yield()
coroutineName= coroutine.create(
    function(i)
        print(i);
        coroutine.yield();
        print(i + i);
    end
)
 -- 开启 coroutine
coroutine.resume(coroutineName, 1)   
-- 查看 coroutine 的状态
print(“暂停了!”)  
 -- 重启 coroutine
coroutine.resume(coroutineName)   
-- 输出结果:1 ..  暂停了!.. 2
coroutine 返回值
coroutineName= coroutine.create(
    function(i)
        print(i);
        -- 暂停时,可以返回coroutine返回值
        coroutine.yield(i);
        print(i + i);
        -- 结束时,也可以返回coroutine返回值
        return i + i;
    end
)
 -- 开启 coroutine
res = coroutine.resume(coroutineName, 1)   
print(res)
-- 查看 coroutine 的状态
print("暂停了!")  
-- 重启 coroutine
res = coroutine.resume(coroutineName)   
print(res)
-- 输出结果: 1 .. 1 ..  暂停了!.. 2 .. 2

相关文章

  • lua协程

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

  • Lua 协同程序(coroutine)

    什么是协同(coroutine)? Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局...

  • Lua 协同程序(coroutine)与文件流操作

    一、协同程序 Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针...

  • lua 协同程序(coroutine)

    基本语法 注:在任一指定时刻只有一个协同程序在运行 定义一个协同程序 定义 coroutine (方法一:使用 ...

  • Lua语言入门(三)

    协同程序 36、协同程序(coroutine)4种状态:挂起(suspended)、运行(running)、死亡(...

  • 协程

    lua将所有关于协同程序的函数放置在一个名为“coroutine”的table中。 例: 一个协程可以处于4种不同...

  • 3. Lua coroutine(table)协同程序

    协同程序所有函数都放在coroutine的table中的。 1. create函数: thread = corou...

  • Unity3D 中的协同程序Coroutine

    今天咱就说说协同程序coroutine。 什么是协同程序 先说说啥是协程:它的表现形式非常像线程,对线程有过接触的...

  • (技术)Python 3 -- 异步IO: asyncio

    先上代码 Coroutine 翻译一下:协同程序 ,简意为协程,又称微线程 @asyncio.coroutin...

  • Lua 标准库(standard libraries)

    一、Lua十标准大库: basic library、coroutine library、package libra...

网友评论

      本文标题:lua 协同程序(coroutine)

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