Fair Threads in C


FairThreads offers a very simple framework for concurrent and parallel programming. Basically, it defines schedulers which are synchronization servers, to which threads can dynamically link or unlink. All threads linked to the same scheduler are executed in a cooperative way, at the same pace, and they can synchronize and communicate using broadcast events. Threads which are not linked to any scheduler are executed by the OS in a preemptive way, at their own pace. FairThreads offers programming constructs for linking and unlinking threads.

FairThreads is fully compatible with the standard Pthreads library and has a precise and clear semantics for its cooperative part; in particular, systems exclusively made of threads linked to one unique scheduler are actually completely deterministic. Special threads, called automata, are provided for short-lived small tasks or when a large number of tasks is needed. Automata do not need the full power of a native thread to execute and thus consume less resources.


The reference paper is [1]

[1]Boussinot, F. -- FairThreads: mixing cooperative and preemptive threads in C -- Concurrency and Computation: Practice and Experience, 18(DOI: 10.1002/cppe.919), 2005, pp. 445-469.

A report describes FairThreads, the API in C, and the man pages: A report describes the formal semantics of the cooperative part of FairThreads:


Current version is v1.0


FairThreads is distributed under the Gnu Public License


Frederic Boussinot

This Html page has been produced by Skribe.
Last update Mon Oct 23 12:08:37 2006.