|
LuaSTG-x Core API
|
Public Member Functions | |
| static function | create (local f) |
| static function | resume (local co, local val1, local ...) |
| static function | running () |
| static function | status (local co) |
| static function | wrap (local f) |
| static function | yield (local ...) |
协程管理
关于协程的操作作为基础库的一个子库,被放在一个独立表 coroutine 中。
创建一个主体函数为 f 的新协程。
f 必须是一个 Lua 的函数。
返回这个新协程,它是一个类型为 "thread" 的对象。
| f | fun():thread |
开始或继续协程 co 的运行。
当第一次开始一个协程,它会从主体函数处开始运行。
val1, ... 这些值会以参数形式传入主体函数。
如果该协程被让出,resume 会重新启动它;
val1, ... 这些参数会作为让出点的返回值。
如果协程运行起来没有错误, resume 返回 true 加上传给 yield 的所有值
(当协程让出),
或是主体函数的所有返回值(当协程中止)。
如果有任何错误发生, resume 返回 false 加错误消息。
| co | thread |
| val1 | string |
| static function running | ( | ) |
返回当前正在运行的协程加一个布尔量。
如果当前运行的协程是主线程,其为真。
以字符串形式返回协程 co 的状态:
当协程正在运行(它就是调用 status 的那个) ,返回 "running";
如果协程调用 yield 挂起或是还没有开始运行,返回 "suspended";
如果协程是活动的,但并不在运行(即它正在延续其它协程),返回 "normal";
如果协程运行完主体函数或因错误停止,返回 "dead"。
| co | thread |
创建一个主体函数为 f 的新协程。
f 必须是一个 Lua 的函数。
返回一个函数,每次调用该函数都会延续该协程。
传给这个函数的参数都会作为 resume 的额外参数。
和 resume 返回相同的值,只是没有第一个布尔量。
如果发生任何错误,抛出这个错误。
| f | fun():thread |