In computer science, 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[1].
The protothread concept was developed by Adam Dunkels and Oliver Schmidt[2].