当前位置: 首页 > 编程笔记 >

Lua编程示例(七):协同程序基础逻辑

宇文飞翮
2023-03-14
本文向大家介绍Lua编程示例(七):协同程序基础逻辑,包括了Lua编程示例(七):协同程序基础逻辑的使用技巧和注意事项,需要的朋友参考一下
co=coroutine.create(function()
 print("hi")
end)
print(coroutine.status(co))
coroutine.resume(co)
print(coroutine.status(co))
print()

co=coroutine.create(function()
 for i=1,2 do
 print("co",i)
 coroutine.yield()
 end
end)
coroutine.resume(co)
print(coroutine.status(co))

coroutine.resume(co)
print(coroutine.status(co))

coroutine.resume(co)  --没有输出
print(coroutine.status(co))
print()

co=coroutine.create(function(a,b,c)
 print("co",a,b,c)
end)
coroutine.resume(co,1,2,3)

co=coroutine.create(function(a,b)
 print("I'm before yield")  --第一次运行执行
 coroutine.yield(a+b,a-b,"needless args")  --在这停住,返回yield的参数
 print("Mgs")
end)
print(coroutine.resume(co,20,10)) --参数传给yield,处理后再返回
print("I print first")
coroutine.resume(co)

co=coroutine.create(function()
 return "I'll return"
end)
print(coroutine.resume(co)) --主函数的返回值回传给resume
print()

输出结果:

suspended
hi
dead

co 1
suspended
co 2
suspended
dead

co 1 2 3
I'm before yield
true 30 10 needless args
I print first
Mgs
true I'll return


 类似资料:
  • 本文向大家介绍举例详解Lua中的协同程序编程,包括了举例详解Lua中的协同程序编程的使用技巧和注意事项,需要的朋友参考一下  协同程序是协同的性质,可以把两个或更多的方法以可控制的方式执行。随着协同程序,在任何给定的时间,只有其协同程序运行之一,这在运行协同程序只能暂停其执行时,明确要求暂停。 上述定义可能看起来模糊。来告诉它更清楚,假设我们有两个方法,一个主程序方法和协同程序。当我们使用恢复功能

  • 主要内容:什么是协同(coroutine)?,coroutine_test.lua 文件,实例,生产者-消费者问题,实例什么是协同(coroutine)? Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。 协同是非常强大的功能,但是用起来也很复杂。 线程和协同程序区别 线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行。 在任一指定时刻只有

  • 什么是协同(coroutine)? Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。 协同是非常强大的功能,但是用起来也很复杂。 线程和协同程序区别 线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行。 在任一指定时刻只有一个协同程序在运行,

  • Lua 基础教程

  • 本文向大家介绍Lua之协同程序coroutine代码实例,包括了Lua之协同程序coroutine代码实例的使用技巧和注意事项,需要的朋友参考一下 注: resume得到返回值, 如果有对应的yield在wait resume,那么yield的参数作为resum的返回值,第一个返回值表示coroutine没有错误,后面的返回值个数及其值视yeild参数而定。 如果没有yield在wait,那么返回

  • 本文向大家介绍Lua下基本的网络编程示例,包括了Lua下基本的网络编程示例的使用技巧和注意事项,需要的朋友参考一下  Lua是高度灵活的语言,它往往是在多个平台,包括Web应用程序中使用。成立2004年的Kepler社区提供Lua的Web组件开放源码。 虽然,也有使用Lua已经开发了其他的web框架,我们将主要集中在Kepler社区提供的组件。 应用程序和框架     Orbit 是一个lua的M