This is the mail archive of the
mailing list for the pthreas-win32 project.
Re: Pthreads-win32 and static linking
- From: Ross Johnson <Ross dot Johnson at homemail dot com dot au>
- To: Martin Lambers <marlam at marlam dot de>
- Cc: pthreads-win32 at sourceware dot org
- Date: Sun, 20 Jun 2010 15:14:59 +1000
- Subject: Re: Pthreads-win32 and static linking
- References: <20100510195037.GA7348@lambers.home>
Martin Lambers wrote:
Hello!Only Windows native threads that call POSIX threads routines. See note
The Mingw-cross-env project provides a MinGW cross-compiling environment
for POSIX systems. For various reasons, all included libraries are
static, including the pthreads-win32 library.
This means that all pthreads users need to call
pthread_win32_thread_attach_np() and pthread_win32_thread_detach_np() in
each thread function.
We would like to avoid patching all libraries that use pthread, andHi Martin,
instead change pthreads-win32: instead of using a thread main function
given to pthread_create() directly, pthreads-win32 could use an internal
wrapper that calls the thread main function and also calls the
attach/detach functions if necessary.
Apologies for the slow response.
Please try the current pthreads-win32 CVS repository head version.
Anonymous CVS access instructions are on our web page at
I've applied most of Ramiro Polla's patches and tested the MinGW32 GCC
static build across the full test suite. The patches that I've omitted
are just conditional compiler directives that broke the DLL build and
did not appear to affect the static build. I've emailed Ramiro privately
Everyone may like to note:
It is not necessary to call pthread_win32_thread_*_np() for any threads
created through pthread_create(). That is only necessary for Windows
native threads that call POSIX API routines in order to interact with
POSIX threads and only when statically linked (often only the primary
Windows thread). That is, pthread_create() already effectively does what
Martin has suggested. I've updated the README.NONPORTABLE file to
hopefully make that clearer.
So with Ramiro's patches most applications should now run unmodified
when statically linked.
This otherwise transparent ability for Windows and POSIX threads to
freely interact (via either API) is an aspect of John Bossom's original
code that has been deliberately retained throughout the evolution of the