This is the mail archive of the
pthreads-win32@sources.redhat.com
mailing list for the pthreas-win32 project.
New pthreads-w32 releases available: versions 2.3.0 and 1.7.0
- From: Ross Johnson <RossJohnson at homemail dot com dot au>
- To: Pthreads-Win32 list <pthreads-win32 at sources dot redhat dot com>
- Date: Tue, 12 Apr 2005 17:46:22 +1000
- Subject: New pthreads-w32 releases available: versions 2.3.0 and 1.7.0
Announcing two new releases of pthreads-w32:-
pthreads-w32-2-3-0-release
pthreads-w32-1-7-0-release
Packages are available in self-unpacking zip files (.exe) and gzipped
tar files (.tar.gz) as usual.
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
These releases hopefully fix all known problems with pthread_once() in
both versions 1 and 2 of pthreads-win32. In particular, the starvation
problem that potentially arises after an init_routine cancellation has
been resolved using momentary priority boosting. If it proves to be
robust then there will be no need for a version 3 release as previously
implied (at least, not to fix pthread_once()).
The additional work of managing thread priorities inside of pthread_once
has been kept out of the normal (cancellation-free) pathways so that the
additional normal path overhead is almost nil (i.e. introduces no
additional bus locking or cache coherence operations if cancellation-
free).
The functionally and behaviour of versions 1.7 and 2.3 should be
logically identical. However, the version 2 pthread_once implementation
(based on code posted by Gottlob Frege) is much more efficient.
RELEASE 2.3.0
-------------
(2005-04-12)
General
-------
Release 1.7.0 is the backport of features and bug fixes new in
this release. See earlier notes under Release 2.0.0/General.
Bugs fixed
----------
* Fixed pthread_once potential for post once_routine cancellation
hanging due to starvation. See comments in pthread_once.c.
Momentary priority boosting is used to ensure that, after a
once_routine is cancelled, the thread that will run the
once_routine is not starved by higher priority waiting threads at
critical times. Priority boosting occurs only AFTER a once_routine
cancellation, and is applied only to that once_control. The
once_routine is run at the thread's normal base priority.
New tests
---------
* once4.c: Aggressively tests pthread_once() under realtime
conditions using threads with varying priorities. Windows'
random priority boosting does not occur for threads with realtime
priority levels.