This is the mail archive of the
pthreads-win32@sources.redhat.com
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.
See
http://sources.redhat.com/pthreads-win32/
or go directly to:
ftp://sources.redhat.com/pub/pthreads-win32/
Red Hat have a low ftp concurrent user limit. Mirrors are at (available
as they update):
http://sources.redhat.com/mirrors.html
NOTES:
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
the tests.
Below is a summary of what's new (from the NEWS file).
Regards.
Ross
SNAPSHOT 2004-11-03
-------------------
DLLs produced from this snapshot cannot be used with older applications
without
recompiling the application, due to a change to pthread_t to provide
unique POSIX
thread IDs.
Although this snapshot passes the extended test suite, many of the
changes are
fairly major, and some applications may show different behaviour than
previously,
so adopt with care. Hopefully, any changed behaviour will be due to the
library
being better at it's job, not worse.
Bug fixes
---------
* pthread_create() no longer accepts NULL as the thread reference arg.
A segfault (memory access fault) will result, and no thread will be
created.
* 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
several
test suite mini-apps because pthread_cond_destroy() now returns EBUSY if
the CV
is still in use.
New features
------------
* Added for compatibility:
PTHREAD_RECURSIVE_MUTEX_INITIALIZER,
PTHREAD_ERRORCHECK_MUTEX_INITIALIZER,
PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
* Initial support for Digital Mars compiler
- Anuj Goyal <anuj.goyal at gmail.com>
* Faster Mutexes. These have been been rewritten following a model
provided by
Alexander Terekhov that reduces kernel space checks, and eliminates some
additional
critical sections used to manage a race between timedlock expiration and
unlock.
Please be aware that the new mutexes do not enforce strict absolute FIFO
scheduling
of mutexes, however any out-of-order lock acquisition should be very rare.
* Faster semaphores. Following a similar model to mutexes above, these
have been
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.
The library
garrantees not to reuse the same thread ID for at least 2^(wordsize) thread
destruction/creation cycles.
New tests
---------
* 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
the CVs,
mutexes, and semaphores that they're built on.