Coroutines

A new coroutine is created by using the coroutine.create function with a single argument: a function to be executed. Returns new coroutine, an object with type thread.

co = coroutine.create(
    function()
        print("honk")
    end
)

print(co)
print(coroutine.status(co))
―――――
thread: 0x5629ba941d58
suspended

A coroutine can be in one of three different states: suspended, running, and dead. When we create a coroutine, it starts in the suspended state.

coroutine.resume(co)
―――――
honk

print(coroutine.status(co))
―――――
dead

Unlike “real” multithreading, coroutines are non preemptive. While a coroutine is running, it cannot be stopped from the outside. It only suspends execution when it explicitly requests so (through a call to yield).



Next: Assertions