Module coroutine
creating and controlling coroutines.
Functions
create (f) | Creates a new coroutine, with body `f`. |
resume (co, ...) | Starts or continues the execution of coroutine `co`. |
running () | Returns the running coroutine. |
status (co) | Returns the status of coroutine `co`. |
wrap (f) | Creates a new coroutine, with body `f`. |
yield (...) | Suspends the execution of the calling coroutine. |
Functions
- create (f)
-
Creates a new coroutine, with body `f`. `f` must be a Lua
function. Returns this new coroutine, an object with type `"thread"`.
Parameters:
- f
- resume (co, ...)
-
Starts or continues the execution of coroutine `co`. The first time
you resume a coroutine, it starts running its body. The values
... are passed as the arguments to the body function. If the coroutine
has yielded, `resume` restarts it; the values ... are passed
as the results from the yield.
If the coroutine runs without any errors, `resume` returns true plus any
values passed to `yield` (if the coroutine yields) or any values returned
by the body function (if the coroutine terminates). If there is any error,
`resume` returns false plus the error message.
Parameters:
- co
- ...
- running ()
- Returns the running coroutine. Or nil when called by the main thread.
- status (co)
-
Returns the status of coroutine `co`. Result is a string: `"running"`, if
the coroutine is running (that is, it called `status`); `"suspended"`, if
the coroutine is suspended in a call to `yield`, or if it has not started
running yet; `"normal"` if the coroutine is active but not running (that
is, it has resumed another coroutine); and `"dead"` if the coroutine has
finished its body function, or if it has stopped with an error.
Parameters:
- co
- wrap (f)
-
Creates a new coroutine, with body `f`. `f` must be a Lua
function. Returns a function that resumes the coroutine each time it is
called. Any arguments passed to the function behave as the extra arguments to
`resume`. Returns the same values returned by `resume`, except the first
boolean. In case of error, propagates the error.
Parameters:
- f
- yield (...)
-
Suspends the execution of the calling coroutine. The coroutine cannot
be running a C function, a metamethod, or an iterator. Any arguments to
`yield` are passed as extra results to `resume`.
Parameters:
- ...