Protothreads
A protothread is a low-overhead mechanism for concurrent programming.
Protothreads function as stackless, lightweight threads providing a blocking context cheaply using minimal memory per protothread (on the order of single bytes).
Protothreads are non-preemptable. Therefore, a context switch can only take place on blocking operations. Protothreads are also stackless, which means global variables are needed for preserving variables across context switches.