This pull request introduces aco_yield_to() that enables a non-main co to yield to another co with a single context switch.
The first patch, namely add aco_yield_to(), seems a little complicated because part of the code of aco_resume() is moved to a new auxiliary function called aco_own_stack() to avoid duplicating code at aco_yield_to(). Ignoring this code movement, the additions are straightforward.
The second patch adds test_aco_tutorial_7.c to test and show how to use aco_yield_to().
This pull request introduces
aco_yield_to()
that enables a non-main co to yield to another co with a single context switch.The first patch, namely add aco_yield_to(), seems a little complicated because part of the code of
aco_resume()
is moved to a new auxiliary function calledaco_own_stack()
to avoid duplicating code ataco_yield_to()
. Ignoring this code movement, the additions are straightforward.The second patch adds
test_aco_tutorial_7.c
to test and show how to useaco_yield_to()
.This pull request closes #31