ossp-web/pkg/lib/pth/index.wml
#use wml::ossp area=pkg:lib subarea=pth
<title>GNU pth</title>
<h1>Portable Threads</h1>
<img src="pth.png" alt="" align=right>
<h2>Abstract</h2>
Pth is a very portable POSIX/ANSI-C based library for Unix platforms which
provides non-preemptive priority-based scheduling for multiple threads of
execution (aka ``multithreading'') inside event-driven applications. All
threads run in the same address space of the server application, but
each thread has it's own individual program-counter, run-time stack,
signal mask and errno variable.
<p>
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.
<p>
Additionally Pth provides an optional emulation API for POSIX.1c threads
("Pthreads") which can be used for backward compatibility to existing
multithreaded applications.
<p>
Notice: <a href="http://www.gnu.org/software/pth/">GNU pth</a> and OSSP pth
are exactly the same. OSSP pth just became an official part of the GNU project
some time ago. That's why its primary name is now GNU pth, although it is
still developed by the OSSP project only. The official companion GNU locations
are: <a
href="http://www.gnu.org/software/pth/">http://www.gnu.org/software/pth/</a>
and <a href="ftp://ftp.gnu.org/gnu/pth/">ftp://ftp.gnu.org/gnu/pth/</a>.
<p>
GNU Pth releases are officially announced on <a
href="mailto:pth-users@gnu.org">pth-users@gnu.org</a> and on <a
href="http://freshmeat.net/">Freshmeat</a>. The Freshmeat <a
href="http://freshmeat.net/projects/gnupth/">GNU pth project page</a>
gives more details.
<h2>Documentation</h2>
<pkg_manpage name="pth" sect=3 path="/pkg/lib/pth/pth.pod">,
<pkg_manpage name="pth-config" sect=1 path="/pkg/lib/pth/pth-config.pod">,
<pkg_manpage name="pthread" sect=3 path="/pkg/lib/pth/pthread.pod">,
<pkg_manpage name="pthread-config" sect=1 path="/pkg/lib/pth/pthread-config.pod">.
<h2>Authors</h2>
<pkg_author name="Ralf S. Engelschall" mail="rse@engelschall.com">
<h2>Status</h2>
<pkg_status
name="pth" assign="rse"
stable="2.0.7" stable_date="08-Jun-2006"
unstable="none" unstable_date="none"
done=100>
<h2>Source</h2>
<pkg_files
cvs=$(CVS_ROOT_URL)/pkg/lib/pth/
url=$(FTP_ROOT_URL)/pkg/lib/pth/
directory=$(FTP_ROOT_DIR)/pkg/lib/pth/
files="pth-*.tar.gz"
stable="pth-2\\\\\\\.0\\\\\\\.7\\\\\\\.tar\.gz" unstable="none">
<h2>Donation</h2>
<pkg_donation name="pth" return="$(BASE_URL)/pkg/lib/pth/">