• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Lua > Lua的协程(coroutine)简介

Lua的协程(coroutine)简介

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了Lua的协程(coroutine)简介等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

协程和多线程下的线程类似:有自己的堆栈,自己的局部变量,有自己的指令指针,但是和其他协程程序共享全局变量等信息。线程和协程的主要不同在于:多处理器的情况下,概念上来说多线程是同时运行多个线程,而协程是通过协作来完成,任何时刻只有一个协程程序在运行。并且这个在运行的协程只有明确被要求挂起时才会被挂起

你可以使用coroutine.create来创建协程:
co = coroutine.create(function ()
     print("hi")
end)
</div>

协程有三种状态:挂起,运行,停止。创建后是挂起状态,即不自动运行。status函数可以查看当前状态。协程真正强大的地方在于他可以通过yield函数将一段正在运行的代码挂起。

lua的resume-yield可以互相交换数据

如果没有对应的yield,传递给resume的额外参数将作为参数传递给协程主函数:
co = coroutine.create(function (a, b, c)
     print("co", a, b, c)
end)
coroutine.resume(co, 1, 2, 3)
</div>

如果没有错误的话,resume将返回true和yield的参数:
co = coroutine.create(function (a, b)
     coroutine.yield(a+b, a-b)
end)
print(coroutine.resume(co, 3, 8))
</div>

同样地,yield也将返回由对应的resume传递而来的参数:
co = coroutine.create (function ()
print("co", coroutine.yield())
end)
coroutine.resume(co)
coroutine.resume(co, 4, 5)
</div>

最后,协程主函数返回值将作为与之对应的resume的返回值(第一个参数是true)。
co = coroutine.create(function ()
return 6, 7
end)
print(coroutine.resume(co))
</div>
(完)

</div>

您可能想查找下面的文章:

相关文章

  • Lua教程(六):编译执行与错误
  • Lua获取utf8字符串长度和字符串截取并用...代替
  • Lua中变相实现continue跳出循环
  • 编写高性能Lua代码的方法
  • 详解Lua中if ... else语句的使用方法
  • Lua文件读写详解
  • Lua中类的实现
  • lua中使用packagepath解决多个项目的路径冲突问题
  • Lua中全局变量与非全局环境介绍
  • Lua教程(十七):C API简介

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Lua编程示例(五): C语言对Lua表的读取和添加
    • Lua中的弱引用介绍
    • Lua编程示例(七):协同程序基础逻辑
    • Lua中获取table长度的方法
    • Lua教程(十五):输入输出库(I/O库)
    • Lua基本语法
    • Lua元表与元方法实例讲解
    • Lua中的__index方法详解
    • Lua中的控制结构(流程控制)简明总结
    • Lua中的闭合函数、非全局函数与函数的尾调用详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有