Open Source
POSIX Threads for Win32

Current release: 2.9.1 (2012-05-27)
See the ANNOUNCEMENT and NEWS for details.

Pthreads-w32 release 1.11.0 (2005-06-04) was the last series 1.x.x version!
(Version 1.11.0 is a back-port of the 2.7.0 functionality and bug fixes. See the NEWS file inside the package for more information.)

What is this project about?

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).

Level of standards conformance

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.

Project maintainer

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.

How does it work?

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. Please note though, that the library can also be built for static linking if necessary.

Success stories

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').

Where can I get it?


[You can also get it from one of several mirror sites.]

The source tree and precompiled .DLL, .LIB and necessary header files are included in the zip file named "" at:
(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.

Just the DLLs, LIBs, header files, and admin documentation is available at:

The source tree is available as a gzipped tar file from:

The source files are also available in unpacked form at:

Direct access to the CVS code repository

You can get anonymous read-only access to the source code using CVS (Concurrent Versioning System), from If you would like to use CVS under Win32, you can get it from

To check out the most recent development version of the source code, type (or whatever the equivalent is in wincvs):

cvs -d checkout pthreads

Via the CVS Web page

There is also a web interface to CVS, which might suit you better if you're more interested in just reading the code.

Just want the DLL without the source code?

The latest DLL, development library, include files (pthread.h, semaphore.h, sched.h) , and ChangeLog are available from

Mailing lists

A discussion list exists for this project.

To Subscribe

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).

Want to unsubscribe?

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.

Other possibilities

There are also ways to get archived mailing list messages, or messages in digest form etc.

Keeping up with code changes

Another mailing list carries CVS notification messages which are generated when modifications are checked into CVS. You can subscribe by sending mail to (What a mouthful!)

Project resources

Other pages

Independent Critiques and benchmarking of the library

PThreads resources



Maintained by Ross Johnson
You can contact me using: Firstname.Lastname at the domain