Fair Threads in C

Frédéric Boussinot
2004 route des Lucioles - BP 93
F-06902 Sophia Antipolis, Cedex


1. Introduction
2. Rationale
3. API Overview
4. API
5. Examples
6. Related Work
7. Conclusion
8. Man Pages

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.

[1] Bigloo Web Site .

[2] CAML Web Site .

[3] Java Web Site .

[4] LinuxThreads Web Site .

[5] Next Generation POSIX Threading Web Site .

[6] Reactive Programming Web Site .

[7] Boussinot, F. -- Reactive C: An Extension of C to Program Reactive Systems -- Software-Practice and Experience, 21(4), 1991.

[8] Boussinot, F. -- Java Fair Threads -- Inria research report, RR-4139, 2001.

[9] Christopher, Thomas W. and Thiruvathukal, George K. -- High Performance Java Platform Computing: Multithreaded and Networked Programming -- Sun Microsystems Press Java Series, Prentice Hall, 2001.

[10] Eager, Derek L. and Zahorjan, John -- Chores: Enhanced run-time support for shared memory parallel computing -- ACM Transaction on Computer Systems, 11(1), 1993.

[11] Engelschall, Ralf S. -- Portable Multithreading -- Proc. USENIX Annual Technical Conference, San Diego, California, 2000.

[12] Halbwachs, Nicolas -- Synchronous Programming of Reactive Systems -- Kluwer Academic Publishers, New York, 1993.

[13] Hollub, A. -- Taming Java Threads -- Apress, 2000.

[14] Keppel, D. -- Tools and Techniques for Building Fast Portable Threads Packages -- Technical Report UWCSE 93-05-06, University of Washington, 1993.

[15] Lowenthal, David K and Freech, Vincent W. and Andrews, Gregory R. -- Efficient Support for Fine-Grain Parallelism on Shared-Memory Machines -- TR 96-1, University of Arizona, 1996.

[16] Maraninchi, F. and Remond, Y. -- Running-Modes of Real-Time Systems: A Case-Study with Mode-Automata -- Proc. 12th Euromicro Conference on Real-Time Systems, Stockholm, Sweden, 2000.

[17] Nichols, B. and Buttlar, D. and Proulx Farrell J. -- Pthreads Programming -- O'Reilly, 1996.

[18] Reppy, John H. -- Concurrent Programming in ML -- Cambridge University Press, 1999.

This page has been generated by Scribe.
Last update Tue Sep 2 16:54:13 2003