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: