Menu

Home

Ross Johnson
There is a newer version of this page. You can find it here.

What is this project about?

The Single Unix Specification (SUS) includes an application programming interface (API) for writing multithreaded applications previously known as the POSIX 1003.1-2001 standard. This interface is known more commonly as pthreads (POSIX threads). A good number of modern operating systems include a threading library of some kind: Solaris (UI) threads, Windows native 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 effort.

Windows does not, and is unlikely to ever, support pthreads natively so 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 Windows.

Level of standards conformance

Pthreads4w currently implements a large subset of the SUSv3 threads related API. See our [Conformance] page for a complete list of options and functions implemented as well as those that aren't.

Acknowledgements

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?

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

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