LuaSTG-x Core API
coroutine Class Reference

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 ...)
 

Detailed Description

协程管理

关于协程的操作作为基础库的一个子库,被放在一个独立表 coroutine 中。

Member Function Documentation

◆ create()

static function create ( local  f)

创建一个主体函数为 f 的新协程。

f 必须是一个 Lua 的函数。

返回这个新协程,它是一个类型为 "thread" 的对象。

Parameters
ffun():thread
Returns
thread

◆ resume()

static function resume ( local  co,
local  val1,
local ...   
)

开始或继续协程 co 的运行。

当第一次开始一个协程,它会从主体函数处开始运行。

val1, ... 这些值会以参数形式传入主体函数。

如果该协程被让出,resume 会重新启动它;

val1, ... 这些参数会作为让出点的返回值。

如果协程运行起来没有错误, resume 返回 true 加上传给 yield 的所有值

(当协程让出),

或是主体函数的所有返回值(当协程中止)。

如果有任何错误发生, resume 返回 false 加错误消息。

重载
fun(co:thread):boolean|any
Parameters
cothread
val1string
Returns
thread|any

◆ running()

static function running ( )

返回当前正在运行的协程加一个布尔量。

如果当前运行的协程是主线程,其为真。

Returns
thread|boolean

◆ status()

static function status ( local  co)

以字符串形式返回协程 co 的状态:

当协程正在运行(它就是调用 status 的那个) ,返回 "running"

如果协程调用 yield 挂起或是还没有开始运行,返回 "suspended"

如果协程是活动的,但并不在运行(即它正在延续其它协程),返回 "normal"

如果协程运行完主体函数或因错误停止,返回 "dead"

Parameters
cothread
Returns
string

◆ wrap()

static function wrap ( local  f)

创建一个主体函数为 f 的新协程。

f 必须是一个 Lua 的函数。

返回一个函数,每次调用该函数都会延续该协程。

传给这个函数的参数都会作为 resume 的额外参数。

resume 返回相同的值,只是没有第一个布尔量。

如果发生任何错误,抛出这个错误。

Parameters
ffun():thread
Returns
fun():any

◆ yield()

static function yield ( local ...  )

挂起正在调用的协程的执行。

传递给 yield 的参数都会转为 resume 的额外返回值。

Returns
any

The documentation for this class was generated from the following file: