mirror of https://github.com/mkerrisk/man-pages
Update text about modern threading implementations (NPTL vs LinuxThreads).
This commit is contained in:
parent
6f1a1e6143
commit
9bc64d3e14
|
@ -111,7 +111,8 @@ Over time, two threading implementations have been provided by
|
|||
the GNU C library on Linux:
|
||||
.IP \- 3
|
||||
.B LinuxThreads
|
||||
This is the original (now obsolete) Pthreads implementation.
|
||||
This is the original Pthreads implementation.
|
||||
Since glibc 2.4, this implementation is no longer supported.
|
||||
.IP \- 3
|
||||
.B NPTL
|
||||
(Native POSIX Threads Library)
|
||||
|
@ -119,7 +120,8 @@ This is the modern Pthreads implementation.
|
|||
By comparison with LinuxThreads, NPTL provides closer conformance to
|
||||
the requirements of the POSIX.1 specification and better performance
|
||||
when creating large numbers of threads.
|
||||
NPTL requires features that are present in the Linux 2.6 kernel.
|
||||
NPTL is available since glibc 2.3.2,
|
||||
and requires features that are present in the Linux 2.6 kernel.
|
||||
.PP
|
||||
Both of these are so-called 1:1 implementations, meaning that each
|
||||
thread maps to a kernel scheduling entity.
|
||||
|
@ -131,9 +133,6 @@ In NPTL, thread synchronization primitives (mutexes,
|
|||
thread joining, etc.) are implemented using the Linux
|
||||
.BR futex (2)
|
||||
system call.
|
||||
.PP
|
||||
Modern GNU C libraries provide both LinuxThreads and NPTL, with the
|
||||
latter being the default (if supported by the underlying kernel).
|
||||
.SS LinuxThreads
|
||||
The notable features of this implementation are the following:
|
||||
.IP \- 3
|
||||
|
@ -297,7 +296,7 @@ in the C shell).
|
|||
Since glibc 2.3.2, the
|
||||
.BR getconf (1)
|
||||
command can be used to determine
|
||||
the system's default threading implementation, for example:
|
||||
the system's threading implementation, for example:
|
||||
.nf
|
||||
.in +4
|
||||
|
||||
|
@ -317,7 +316,8 @@ bash$ $( ldd /bin/ls | grep libc.so | awk '{print $3}' ) | \\
|
|||
.in -4
|
||||
.fi
|
||||
.SS "Selecting the Threading Implementation: LD_ASSUME_KERNEL"
|
||||
On systems with a glibc that supports both LinuxThreads and NPTL, the
|
||||
On systems with a glibc that supports both LinuxThreads and NPTL
|
||||
(i.e., glibc 2.3.\fIx\fP), the
|
||||
.B LD_ASSUME_KERNEL
|
||||
environment variable can be used to override
|
||||
the dynamic linker's default choice of threading implementation.
|
||||
|
|
Loading…
Reference in New Issue