Abstract:
FairThreads offers a 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 dynamically
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.
Slides (.ps)