[fpc-devel] Protothreads for UNIX (maybe for FPC?)

Graeme Geldenhuys graemeg.lists at gmail.com
Mon Jan 19 08:24:31 CET 2009

I thought somebody might find this interesting. And it's only 400
lines of C code.

Originally posted at:

Protothreads [http://en.wikipedia.org/wiki/Protothreads] are a type of
extremely lightweight threads - each protothread requires only two
bytes of memory - that are usually used for embedded firmware
programming, where memory is at a premium. Protothreads combine the
low overhead with event-driven programming with the algorithmic
clarity [http://www.sics.se/~adam/dunkels06protothreads.pdf] of
threaded programming.

Larry Ruane from LeftHand Networks Inc. has written a protothreads
library for Unix systems [http://protothread.wiki.sourceforge.net/]
that, unlike Adam Dunkels' original library, contains a complete
scheduler that allows several protothreads to run inside a regular
thread. Ruane's protothreads are implemented in less than 400 lines of
C code using gcc's labels-as-values
[http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html] feature. The
project wiki [http://protothread.wiki.sourceforge.net/] has a thorough
explanation of how protothreads work and how they are intended to be
used. The open source code can be downloaded from the project's
SourceForge page

  - Graeme -

fpGUI - a cross-platform Free Pascal GUI toolkit

More information about the fpc-devel mailing list