协程模块是lua原生自带的模块,具使用见:lua官方手册
::: tip API
coroutine.create(f: <function>)
:::
| 参数 | 描述 |
|---|---|
| f | 创建协程的函数 |
创建一个带有函数 f 的新协程。返回一个代表协程的线程对象。
local co = coroutine.create(function()
print("Hello from coroutine")
end)
::: tip API
coroutine.resume(co: <thread>, ...)
:::
| 参数 | 描述 |
|---|---|
| co | 协程线程 |
| ... | 传递给协程的参数 |
开始或继续执行协程 co。如果协程执行成功则返回 true,否则返回 false。
local success, result = coroutine.resume(co, "arg1", "arg2")
::: tip API
coroutine.yield(...)
:::
| 参数 | 描述 |
|---|---|
| ... | 返回给调用者的值 |
暂停调用协程的执行并将值返回给调用者。
coroutine.yield("value1", "value2")
::: tip API
coroutine.status(co: <thread>)
:::
| 参数 | 描述 |
|---|---|
| co | 协程线程 |
返回协程 co 的状态:"suspended"(挂起)、"running"(运行中)、"normal"(正常)或 "dead"(死亡)。
local status = coroutine.status(co)
::: tip API
coroutine.wrap(f: <function>)
:::
| 参数 | 描述 |
|---|---|
| f | 创建协程的函数 |
创建一个带有函数 f 的新协程,并返回一个函数,每次调用该函数时都会恢复协程。
local func = coroutine.wrap(function()
return "Hello"
end)
local result = func()
::: tip API
coroutine.running()
:::
此函数不需要参数。
返回正在运行的协程,如果在主线程中调用则返回 nil。
local co = coroutine.running()