Folks,
I am proud to announce the release of the Protothreads Library version
1.0:Protothreads are extremely lightweight stackless threads designed for severely memory constrained systems such as small embedded systems or sensor network nodes. Protothreads provide linear code execution for event-driven systems implemented in C. Protothreads can be used with or without an underlying operating system.
Protothreads provide a blocking context on top of an event-driven system, without the overhead of per-thread stacks. The purpose of protothreads is to implement sequential flow of control without complex state machines or full multi-threading. Protothreads provide conditional blocking inside C functions.
Main features:
- No machine specific code - the protothreads library is pure C * Does not use error-prone functions such as longjmp() * Very small RAM overhead - only two bytes per protothread * Can be used with or without an OS * Provides blocking wait without full multi-threading or stack-switching * Freely available under a BSD-like open source license
Example applications:
- Memory constrained embedded systems * Event-driven protocol stacks * Sensor network nodes
The protothreads library is released under an open source BSD-style license that allows for both non-commercial and commercial usage. The protothreads library was written by Adam Dunkels with support from Oliver Schmidt .
/adam