Protothreads are an extremely lightweight, stackless type of threads written in portable C code. Protothreads provide blocked waiting and sequential code execution on top of event-driven systems, without the overhead of full multithreading or per-thread stacks. They are designed for severely memory constrained systems, has a very low RAM overhead, and can be used with or without an underlying OS. New in version 1.1 is the PT_YIELD() operation that allows a protothread to yield the CPU.