The POSIX 1003.1-2001 standard defines an application programming interface (API) for writing multithreaded applications. This interface is known more commonly as pthreads. A good number of modern operating systems include a threading library of some kind: Solaris (UI) threads, Win32 threads, DCE threads, DECthreads, or any of the draft revisions of the pthreads standard. The trend is that most of these systems are slowly adopting the pthreads standard API, with application developers following suit to reduce porting woes.
Win32 does not, and is unlikely to ever, support pthreads natively. This project seeks to provide a freely available and high-quality solution to this problem.
Various individuals have been working on independent implementations of this well-documented and standardised threading API, but most of them never see the light of day. The tendency is for people to only implement what they personally need, and that usually does not help others. This project attempts to consolidate these implementations into one implementation of pthreads for Win32.
This implementation is free software, distributed under the GNU Lesser General Public License (LGPL).
Pthreads-win32 currently implements a large subset of the POSIX standard threads related API. See our conformance page for a complete list of options and functions implemented as well as those that aren't.
HTML formatted manual pages are now available inside the package and on this site. Peruse them for additional Pthreads-win32 information.
The project is being maintained by Ross Johnson, who has been involved from the start in 1998. The role primarily involves integrating contributed code and problem fixes, writing some original sections and test cases, and of course, testing, packaging and distributing the product.
We would like to thank Ben Elliston for initiating the project, and John Bossom for providing us with his win32 pthreads implementation, which provided the near complete basis for this project.
Thanks to Xavier Leroy for granting permission to use and modify his LinuxThreads manual pages, and to the Open Group for their manual pages.
Thanks also to all past and present contributors to the project.
Please also see the Acknowledgements section of the latest ANNOUNCEMENT page.
The Win32 pthreads is normally implemented as a dynamic link library (DLL). This has some notable advantages from the Win32 point of view, but it also more closely models existing pthread libraries on UNIX which are usually shared objects (e.g. libpthread.so). Please note though, that the library can also be built for static linking if necessary.
The library is being used in many projects either migrating from Unix platforms or developing cross-platform applications. These include commercial, research and other applications, many of which can be found via a Google search (e.g. try the keywords 'pthreads-win32' and 'requirements').
[You can also get it from one of several mirror sites.]
source tree and precompiled .DLL, .LIB and necessary header files are
included in the zip file named "pthread-w32-v-v-v-release.zip"
(v-v-v is the version number, e.g. 1-4-0, and “release” is a descriptive term that may vary, e.g. beta1, rc1. Etc). Versions older than 2.9.1 are in self-extracting .exe files.
DLLs, LIBs, header files, and admin documentation is available
source tree is available as a gzipped tar file
source files are also available in unpacked form
You can get anonymous read-only access to the source code using CVS (Concurrent Versioning System), from sourceware.org. If you would like to use CVS under Win32, you can get it from www.wincvs.org
To check out the most recent development version of the source code, type (or whatever the equivalent is in wincvs):
cvs -d :pserver:email@example.com:/cvs/pthreads-win32 checkout pthreads
There is also a web interface to CVS, which might suit you better if you're more interested in just reading the code.
The latest DLL, development library, include files (pthread.h, semaphore.h, sched.h) , and ChangeLog are available from ftp://sourceware.org/pub/pthreads-win32/dll-latest
A discussion list exists for this project.
Send mail to
No subject or message is required, but will be ignored if present (some mailers may insist on one or both before sending the message).
Send mail to
If you still get mail from the list after this then perhaps you've changed your address, in which case the list server won't recognise you. If you are still getting mail forwarded to you from your old address then you can unsubscribe your old address by sending mail to
where oldname=oldhost.olddomain must be your previous address (with the '@' replaced by '='). A message will be sent to your old address so that you can confirm your removal. Otherwise you'll have to notify Ross so that he can remove your previous address by hand.
There are also ways to get archived mailing list messages, or messages in digest form etc.
Another mailing list carries CVS notification messages which are generated when modifications are checked into CVS. You can subscribe by sending mail to firstname.lastname@example.org. (What a mouthful!)