summaryrefslogtreecommitdiffhomepage
path: root/misc/examples
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2023-05-31 17:38:49 +0200
committerTyge Løvset <[email protected]>2023-05-31 17:38:49 +0200
commitc23a90112ffc50ed5977874ec31cf4fd3d4afd9b (patch)
tree16213ecba2a5a4af8a2b0b18fb293605be702232 /misc/examples
parent7dd28530c93b907cc26064232c5498e45e838723 (diff)
downloadSTC-modified-c23a90112ffc50ed5977874ec31cf4fd3d4afd9b.tar.gz
STC-modified-c23a90112ffc50ed5977874ec31cf4fd3d4afd9b.zip
Simplified coroutine API. Removed unneeded cco_await_coro() and cco_yield_coro().
Diffstat (limited to 'misc/examples')
-rw-r--r--misc/examples/cointerleave.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/misc/examples/cointerleave.c b/misc/examples/cointerleave.c
index 42bf1d32..51b9f39a 100644
--- a/misc/examples/cointerleave.c
+++ b/misc/examples/cointerleave.c
@@ -29,11 +29,15 @@ struct Generator {
void interleaved(struct Generator* g)
{
cco_routine(g) {
- while (!(cco_done(&g->x) & cco_done(&g->y)))
- {
- cco_yield_coro(&g->x, g->value = get_value(&g->x));
- cco_yield_coro(&g->y, g->value = get_value(&g->y));
- }
+ do {
+ g->value = get_value(&g->x);
+ if (!cco_done(&g->x))
+ cco_yield();
+
+ g->value = get_value(&g->y);
+ if (!cco_done(&g->y))
+ cco_yield();
+ } while (!(cco_done(&g->x) & cco_done(&g->y)));
}
}