Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

The LinuxThreads library

LinuxThreads is an implementation of the Posix 1003.1c thread package for Linux.

Unlike other implementations of Posix threads for Linux, LinuxThreads provides kernel-level threads: threads are created with the new clone() system call and all scheduling is done in the kernel.

The main strength of this approach is that it can take full advantage of multiprocessors. It also results in a simpler, more robust thread library, especially w.r.t. blocking system calls.

For more information, see the LinuxThreads README and the LinuxThreads Frequently Asked Questions.

Warning

LinuxThreads is now obsolete and is being replaced by NPTL. The initial author of LinuxThreads (Xavier Leroy) stopped working on LinuxThreads a long time ago. The glibc development team, in particular Ulrich Drepper, continued working on LinuxThreads for a while, but are now developing NPLT instead.

The information on this Web page has not been updated in a while and may not be 100% up to date. The glibc mailing lists often contain more up-to-date information.

General questions about LinuxThreads and programming with POSIX threads should be posted on the comp.programming.threads newsgroup.

Bug reports should be sent directly to the glibc development team using the glibcbug script that is installed on your machine along with glibc itself.

Obtaining LinuxThreads

For Linux systems based on glibc 2 (e.g. RedHat 5.0 and later): the glibc 2 version of LinuxThreads is distributed along with glibc 2 itself. If you have installed a Linux distribution based on glibc 2 (such as RedHat 5.0 and later, or indeed most major Linux distributions these days), you already have LinuxThreads on your computer. Congratulations. Otherwise, both glibc 2 and the associated LinuxThreads distribution can be found on Cygnus/RedHat source collection, and also on any FTP site that mirrors GNU software (the Cygnus/RedHat site is sometimes more up-to-date than the GNU sites).

For Linux systems based on libc 5 (e.g. old versions of Slackware): The source distribution of LinuxThreads for libc 5 is available at ftp://ftp.inria.fr/INRIA/Projects/cristal/Xavier.Leroy/linuxthreads.tar.gz. Please note that the libc 5 version of LinuxThreads is obsolete and no longer maintained. An upgrade to glibc 2 is highly recommended for reliable multithreading programming.

Debugging threaded programs with GDB: Recent versions of gdb and glibc support the debugging of multithreaded programs. For instance, RedHat 6.2 and later come with a thread-aware version of gdb.

For older systems: see H.J.Lu's patches for gdb, which include thread support and more. The very first attempt at multi-threaded debugging for LinuxThreads was the patches for gdb 4.17 developed at The Open Group, Grenoble, but this is now largely obsolete. The Open Group patches are for glibc 2. Kaz Kylheku back-ported them to libc 5: patch for LinuxThreads 0.71/libc5 and patch for GDB 4.17.

Documentation

LinuxThreads-related software

  • Richard Neitzel's libaio, a library of POSIX.1b compliant asynchronous I/O functions based on LinuxThreads.

  • The Adaptive Communication Environment (ACE) contains C++ wrappers for LinuxThreads and much, much more.

  • Jim Doyle's DCE Threads Emulation Package for LinuxThreads allows applications written with DCE threads (a.k.a. draft 4 POSIX threads) to run easily on top of LinuxThreads.

  • The AOL multithreaded Web server uses LinuxThreads for its Linux version.

  • Software AG's port of DCOM for Linux also uses LinuxThreads.

  • LinuxThreads is used in MpegTV Player, a commercial/shareware real-time MPEG Video player (with audio/sync) and Video-CD player for Linux.

  • Com-One's Video live server runs under Linux and uses LinuxThreads.

  • Blackdown's port of the Java Development Kit 1.2 for Linux supports "native" threads built on top of LinuxThreads as an alternative to the JDK's own "green" threads. The Kaffe Java implementation does the same.

  • GNAT, the GNU Ada95 compiler, comes with a "native" run-time system that implements Ada tasks using LinuxThreads.

  • Ted Baker's FLORIST package is a POSIX.5 library for GNAT that can be used as an Ada95 interface to LinuxThreads and other Linux system calls. It also includes a POSIX conformance test kit.

  • Proxy, a threaded IP filtering proxy server.


Xavier.Leroy@inria.fr