ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 协同程序(coroutine) | 方法 | 描述 | | --- | --- | | coroutine.create() | 创建 coroutine,返回 coroutine, 参数是一个函数,当和 resume 配合使用的时候就唤醒函数调用 | | coroutine.resume() | 重启 coroutine,和 create 配合使用 | | coroutine.yield() | 挂起 coroutine,将 coroutine 设置为挂起状态,这个和 resume 配合使用能有很多有用的效果 | | coroutine.status() | 查看 coroutine 的状态 <br/>注:coroutine 的状态有三种:dead,suspended,running,具体什么时候有这样的状态请参考下面的程序 | | coroutine.wrap() | 创建 coroutine,返回一个函数,一旦你调用这个函数,就进入 coroutine,和 create 功能重复 | | coroutine.running() | 返回正在跑的 coroutine,一个 coroutine 就是一个线程,当使用running的时候,就是返回一个 corouting 的线程号 | ## 示例 ### 生产消费 ``` local newProduct function product() local i=1 while true do send(i) i=i+1 end end function consumer() while true do local r =recer() print(r) end end function send(y) coroutine.yield(y) end function recer() local status,value= coroutine.resume(newProduct) return value end newProduct =coroutine.create(product) consumer() -- 1 -- 2 -- ... ```