跳转到内容

coroutine

协程模块是lua原生自带的模块,具使用见:lua官方手册

coroutine.create

  • 创建一个新的协程

函数原型

API

lua
coroutine.create(f: <function>)

参数说明

参数描述
f创建协程的函数

用法说明

创建一个带有函数 f 的新协程。返回一个代表协程的线程对象。

lua
local co = coroutine.create(function()
    print("Hello from coroutine")
end)

coroutine.resume

  • 恢复协程的执行

函数原型

API

lua
coroutine.resume(co: <thread>, ...)

参数说明

参数描述
co协程线程
...传递给协程的参数

用法说明

开始或继续执行协程 co。如果协程执行成功则返回 true,否则返回 false。

lua
local success, result = coroutine.resume(co, "arg1", "arg2")

coroutine.yield

  • 将执行权让给调用者

函数原型

API

lua
coroutine.yield(...)

参数说明

参数描述
...返回给调用者的值

用法说明

暂停调用协程的执行并将值返回给调用者。

lua
coroutine.yield("value1", "value2")

coroutine.status

  • 获取协程的状态

函数原型

API

lua
coroutine.status(co: <thread>)

参数说明

参数描述
co协程线程

用法说明

返回协程 co 的状态:"suspended"(挂起)、"running"(运行中)、"normal"(正常)或 "dead"(死亡)。

lua
local status = coroutine.status(co)

coroutine.wrap

  • 创建协程包装函数

函数原型

API

lua
coroutine.wrap(f: <function>)

参数说明

参数描述
f创建协程的函数

用法说明

创建一个带有函数 f 的新协程,并返回一个函数,每次调用该函数时都会恢复协程。

lua
local func = coroutine.wrap(function()
    return "Hello"
end)
local result = func()

coroutine.running

  • 获取正在运行的协程

函数原型

API

lua
coroutine.running()

参数说明

此函数不需要参数。

用法说明

返回正在运行的协程,如果在主线程中调用则返回 nil。

lua
local co = coroutine.running()