Protothreads

Stackless Threads in C

http://www.sics.se/~adam/pt/

Simple ANSI C implementation of Cooperative Threading.

One of the major limitations of Protothreads is that the PT functions can only be called from one translation unit and in a direct call chain.

You can't, for example, create a Tcl interface to Protothreads since that would require calling PT_YIELD outside of a direct call chain.


My "Yield Term" patch against Protothreads. In stock Protothreads if you PT_EXIT from a Protothread and you request that it be scheduled again then it starts all over again from the beginning. This patch marks a thread as exited when it calls PT_EXIT so that PT_SCHEDULE has no effect on it (until PT_INIT is called on it).


Sample application using Protothreads: