This is the mail archive of the
mailing list for the pthreas-win32 project.
New snapshot 2004-11-03 available
- From: Ross Johnson <rpj at ise dot canberra dot edu dot au>
- To: pthreads-win32 at sources dot redhat dot com
- Date: Wed, 03 Nov 2004 17:10:16 +1100
- Subject: New snapshot 2004-11-03 available
Announcing a new snapshot 2004-11-03.
or go directly to:
Red Hat have a low ftp concurrent user limit. Mirrors are at (available
as they update):
1) There has been an ABI change that makes this version's DLL
incompatible with older applications. Don't distribute a DLL from this
snapshot to application users without also providing new builds of your
applications. The change is in the definition of pthread_t in pthread.h.
2) This snapshot doesn't include a pre-built
pthreadVCE.dll/pthreadVCE.lib (the variant that uses MSVC++ exception
handling for cancelation/pthread_exit) because MSVC++ 6.0 (that's all I
have access to) produces a broken dll. The problem appears to be the
same as that reported in the BUGS file (#2), only the workaround doesn't
work this time (fails tests\semaphore4.c). All other variants -
pthreadGC.dll, pthreadGCE.dll, pthreadVC.dll, pthreadVSE.dll - work
fine. A pthreadVCE.dll built with a later version of MSVC++ may work. If
you find that this is the case, could you please report it.
If you've been using pthreadVCE.dll, try/consider using pthreadVC.dll
instead. Unless you are explicitly defining __CLEANUP_CXX or
__CLEANUP_SEH for both pthread dll and application builds, then you're
using the preferred pthreadVC.dll anyway. See the README file if you're
not confused enough already.
3) Although I've applied the relevant contributed patches, I have not
been able to build working Watcom or Borland versions, due to things
like errno weirdness and differences. I'm happy to apply patches to get
these versions working, but please only send patches once you've
verified they pass the full test suite, or suitably patched versions of
Below is a summary of what's new (from the NEWS file).
DLLs produced from this snapshot cannot be used with older applications
recompiling the application, due to a change to pthread_t to provide
Although this snapshot passes the extended test suite, many of the
fairly major, and some applications may show different behaviour than
so adopt with care. Hopefully, any changed behaviour will be due to the
being better at it's job, not worse.
* pthread_create() no longer accepts NULL as the thread reference arg.
A segfault (memory access fault) will result, and no thread will be
* pthread_barrier_wait() no longer acts as a cancelation point.
* Fix potential race condition in pthread_once()
- Tristan Savatier <tristan at mpegtv.com>
* Changes to pthread_cond_destroy() exposed some coding weaknesses in
test suite mini-apps because pthread_cond_destroy() now returns EBUSY if
is still in use.
* Added for compatibility:
* Initial support for Digital Mars compiler
- Anuj Goyal <anuj.goyal at gmail.com>
* Faster Mutexes. These have been been rewritten following a model
Alexander Terekhov that reduces kernel space checks, and eliminates some
critical sections used to manage a race between timedlock expiration and
Please be aware that the new mutexes do not enforce strict absolute FIFO
of mutexes, however any out-of-order lock acquisition should be very rare.
* Faster semaphores. Following a similar model to mutexes above, these
rewritten to use preliminary users space checks.
* sem_getvalue() now returns the number of waiters.
* The POSIX thread ID now has much stronger uniqueness characteristics.
garrantees not to reuse the same thread ID for at least 2^(wordsize) thread
* semaphore4.c: Tests cancelation of the new sem_wait().
* semaphore4t.c: Likewise for sem_timedwait().
* rwlock8.c: Tests and times the slow execution paths of r/w locks, and
mutexes, and semaphores that they're built on.