Lua中的协同函数

一,协同函数的定义和启动:
–a.用coroutine.create创建一个协程
Co= coroutine.create(function(a,b)
local c =a+b
return c
end
)
–1.启动coroutine.create定义的函数
coroutine.resume(Co,20,30)

b.用coroutine.wrap定义一个协同函数
Co1=coroutine.wrap(function (a,b)
local c=a+b
return c
end
)
–1.启动coroutine.wrap()函数
Co1(20,30)

二,协同函数的暂停
Co=coroutine.create(function(a,b)
print a+b
coroutine.yield()
end
)
三,协程函数的返回值
Co2=coroutine.create(function (c,e)
local d=c+e
return d
end
)
res,res1=coroutine.resume(Co2,20,30)–res 是否启动成功,res1返回值1

四,协同函数的状态
coroutine.states(Co) --返回的是当前协同的运行状态。

一、基本库 函数 (basic functions) _G:保存全局环境的全局变量(不是 函数 )(即_G._G = _G)。 Lua 本身不使用这个变量;改变它的值不会影响任何环境,反之亦然。(改变环境使用setfenv) _VERSION:保存包含当前解释器版本的字符串的全局变量(不是 函数 ),5.1 这个变量的值是“ Lua 5.1”。 assert(v [, mess...
通过上两篇 lua 代码执行流程, lua 协程 场景分析的介绍,知道了 协程 的基本用法和场景.其实 协程 协程 之间是通过参数和 返回值 进行交互的.引用上篇的代码:coConsume = coroutine.create( function () while true do local stutas, msg = coroutine.resume(coProducer) print('rece...
所有 协程 相关的在表coroutine ,创建通过create来创建,参数为 函数 返回值 类型为thread. 协程 状态 有:suspended, running, normal, dead。通过coroutine.status获取 协程 状态 。 create创建的 协程 初始 状态 为suspened,通过coroutine.resume来 启动 执行, 协程 状态 变为running 暂停 协程 使用coroutine.yield
lua L_loadstring(L, "return coroutine.create(function() end)");   nCallResult = lua _pcall(L, 0, 1, 0); 创建一个 协程 lua _newthread创建一个线程一样,不过这个创建会在线程的堆栈上压入一个上面的function() end; lua _newthread只是创建一个线程,堆栈个数为
一: 协程 与线程的区别 在 Lua 里,最主要的线程是协同程序(coroutine),它跟线程差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西线程跟 协程 的区别:线程可以同时多个运行,而 协程 任意时刻只能运行一个,并且处于运行 状态 协程 只有被挂起(suspend)时才会 暂停 二:什么是 协程 协程 和线程都是针对于 函数 来说的,一个 函数 的正常执行步骤是执行完此...
lua 协同程序 个人认为 lua 的协同程序,就是某个 函数 执行到一半可以 暂停 ,再重启 其 主要程序是 coroutine.create() 创建程序,coroutine.resume() 启动 程序,coroutine.yield() 暂停 程序 这里我先就个人理解写个案例 --这里创建了一个协同程序,刚创建的程序默认是停止 状态 co = coroutine.create( function(a,b) --'首先我们直接打印传入得两个参数' print(a,b);