NAME
        yield

SYNTAX
        yield()
        yield(<value>)
        yield(<value>, <coroutine>)

DESCRIPTION
        The instruction is only allowed in a coroutine and suspends its
        execution.

        The first two forms return to the caller (i.e. the function that
        continued the execution of the coroutine with call_coroutine()),
        the third form resumes execution of the given coroutine, which
        must currently be in a suspended state.

        The value will be passed to the caller as the result of the
        call_coroutine() call resp. to the target coroutine as the result
        of its yield() instruction that suspended its execution before.
        If the coroutine had just started, the value will be discarded.
        In the first form, 0 will be passed to the caller.

HISTORY
        Coroutines were introduced in LDMud 3.6.5.

SEE ALSO
        coroutines(LPC), async(LPC), await(LPC), foreach(LPC),
        call_coroutine(E), this_coroutine(E)
