Sat Jan 4 21:49:25 CET 2020

CSP in C

Rendezvous is too hard to implement, so use buffers.

See uc_tools/cbuf.h, optionally with both ends of the channel exposed
as separate types to make it clear if a channel is input or output for
the current "task".

A "task" is a C struct containing state variables and channel pointers.

Scheduling can usually be done in an ad-hoc fashion, using a
round-robin scheduler where each task defines its own poll routine.
sm.h style state machines could be used.

EDIT: Don't call this CSP if it's not rendez-vous!