Pth is a very portable POSIX/ANSI-C-based library for Unix
platforms which provides non-preemptive scheduling for
multiple threads of execution ("multithreading") inside
server applications.
All threads run in the same address space of the server
application, but each thread has its own individual
program-counter, run-time stack, signal mask and errno
variable.
The thread scheduling itself is done in a cooperative way,
i.e., the threads are managed by a priority- and event-based
non-preemptive scheduler. The intention is that this way one
can achieve better portability and run-time performance than
with preemptive scheduling. The event facility allows
threads
to wait until various types of events occur, including
pending I/O on filedescriptors, asynchronous signals,
elapsed timers, pending I/O on message ports, thread and
process termination, and even customized callback functions.
Additionally, Pth provides an optional emulation API for
POSIX.1c threads ("pthreads") which can be used for
backward compatibility to existing multithreaded
applications.