diff options
author | rpj <rpj> | 2002-01-07 07:10:46 +0000 |
---|---|---|
committer | rpj <rpj> | 2002-01-07 07:10:46 +0000 |
commit | 0337d817b128c648d97a79f42b303421b5b76386 (patch) | |
tree | 3a0204c23010279d7c0ef7f7a229205ca628295a /ANNOUNCE | |
parent | 6922362c66bbfaa3ac9b7bb6be24368d790d28d6 (diff) |
* mutex.c (pthread_mutex_init): Remove critical
section calls.
(pthread_mutex_destroy): Likewise.
(pthread_mutex_unlock): Likewise.
(pthread_mutex_trylock): Likewise; recursive mutexes
now increment the lock count rather than return EBUSY;
errorcheck mutexes return EDEADLCK rather than
EBUSY. This behaviour is consistent with the Solaris
pthreads implementation.
* implement.h (pthread_mutex_t_): Remove critical
section element - no longer needed.
Diffstat (limited to 'ANNOUNCE')
-rw-r--r-- | ANNOUNCE | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -31,7 +31,7 @@ platform dependence -------------------
As Win9x doesn't provide one, the library now contains
it's own InterlockedCompareExchange() routine. It is used to
-implement spinlocks and barriers, and soon may be used in mutexes.
+implement spinlocks and barriers, and also in mutexes.
This routine relies on the CMPXCHG machine instruction which
is only available in i486 or above CPUs. This library
(from snapshot 20010712 onwards) therefore no longer runs on
@@ -53,6 +53,15 @@ Removed potential race condition in pthread_mutex_trylock and pthread_mutex_lock;
- Alexander Terekhov <TEREKHOV@de.ibm.com>
+The behaviour of pthread_mutex_trylock in relation to
+recursive mutexes was inconsistent with commercial implementations.
+Trylock would return EBUSY if the lock was owned already
+regardless of mutex type. Trylock now increments the recursion
+count and returns 0 for RECURSIVE mutexes, and will now return
+EDEADLCK instead of EBUSY for ERRORCHECK mutexes. This is
+consistent with Solaris.
+- Thomas Pfaff <tpfaff@gmx.net>
+
---------------------------
Known bugs in this snapshot
---------------------------
|