
#include 'template.wml'

#use wml::std::toc style=pre
#use wml::std::box

<set-var VERS="2.0.7">
<set-var DATE="08-Jun-2006">

# <set-var DEVVERS="1.4a4">
# <set-var DEVDATE="24-Mar-2001">

<p>
# <box header="<b id=sf>Current State</b>" bdwidth=1 bdspace=6 bdcolor="#cccccc" bgcolor="#ffffff">
<table cellspacing=0 cellpadding=0 border=0>
<tr>
<td>
Release Version: &nbsp; </td> <td>
<a href="ftp://ftp.gnu.org/gnu/pth/pth-<get-var VERS>.tar.gz">\
GNU Pth <b><get-var VERS></b></a> &nbsp; </td> <td> (<get-var DATE>) </td>
<td>&nbsp;&nbsp; <a href="http://cvs.ossp.org/pkg/lib/pth/ChangeLog">ChangeLog</a> </td>
</tr>
# <tr>
# <td> Development Version: &nbsp; </td> <td>
# <a href="ftp://alpha.gnu.org/gnu/pth/pth-<get-var DEVVERS>.tar.gz">\
# GNU Pth <b><get-var DEVVERS></b></a> &nbsp; </td> <td> (<get-var DEVDATE>)</td>
# <td>&nbsp;&nbsp; <a href="ChangeLog-1.4.txt">ChangeLog</a> </td>
# </tr>
</table>
# </box>

<h2>Abstract</h2>

<p>
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>
<blockquote>
Notice: <a href="http://www.gnu.org/software/pth/">GNU pth</a> and <a href="http://www.ossp.org/pkg/lib/pth/">OSSP pth</a>
are exactly the same. <a href="http://www.ossp.org/pkg/lib/pth">OSSP pth</a> 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 <a href="http://www.ossp.org/">OSSP project</a> only. The companion OSSP locations
are: <a
href="http://www.ossp.org/pkg/lib/pth/">http://www.ossp.org/pkg/lib/pth/</a>
and <a href="ftp://ftp.ossp.org/pkg/lib/pth/">ftp://ftp.ossp.org/pkg/lib/pth/</a>.
</blockquote>

<h2>Documentation</h2>

GNU Pth is documented by a <a href="pth-manual.html">manual</a> which
describes the functionality and API of the library in detail. This document is
available in <a href="pth-manual.html">HTML</a>, <a
href="pth-manual.dvi">DVI</a>, <a href="pth-manual.ps">Postscript</a> and <a
href="pth-manual.pod">POD</a> format.  Additionally there is a draft of the
forthcoming paper <a href="rse-pmt.ps">Portable Multithreading</a>
(Postscript) from the author. Finally the <a href="/brave-gnu-world/">Brave
GNU World</a> column contains a short introduction to GNU Pth in its <a
href="/brave-gnu-world/issue-7.en.html">Issue No. 7</a>.

<h2>Distribution</h2>

The distribution of the latest GNU Pth
release version can be found on <A
HREF="ftp://ftp.ossp.org/pkg/lib/pth/">ftp://ftp.ossp.org/pkg/lib/pth/</A> and <A
HREF="ftp://ftp.gnu.org/gnu/pth/">ftp://ftp.gnu.org/gnu/pth/</A>
(or one of <A HREF="/prep/ftp.html">the mirrors</A>). Alpha versions can be found on <A
HREF="ftp://alpha.gnu.org/gnu/pth/">ftp://alpha.gnu.org/gnu/pth/</A>.
For more details about the latest changes have a look at the change logfile 
<A HREF="http://cvs.ossp.org/pkg/lib/pth/ChangeLog">ChangeLog</A>.

<h2>Bug Reports and Support</h2>

If you think you have found a bug in GNU Pth, then you should send a report as
complete as possible to <A
HREF="mailto:bug-pth@gnu.org">&lt;bug-pth@gnu.org&gt;</A>. And if you can,
please try to fix the problem and include a patch made with "<CODE>diff
-u3</CODE>" in your report.  Additionally there is a mailing list <A
HREF="mailto:pth-users@gnu.org">&lt;pth-users@gnu.org&gt;</A> which you can
join for support and discussions. Send a mail with ``<tt>subscribe
pth-users</tt>'' in the body to <A
HREF="mailto:pth-users-request@gnu.org">&lt;pth-users-request@gnu.org&gt;</A>
Old messages of the mailing list are archived at
<a href="http://www.mail-archive.com/pth-users@gnu.org/">http://www.mail-archive.com/pth-users@gnu.org/</a>.

<h2>Further Reading</h2>

For more details on available multithreading software, we have collected a <a
href="related.html">list of multithreading libraries</a>.  Use this to find
Pth related projects and packages.

