]> git.sesse.net Git - vlc/commitdiff
Do not blindly favor writers
authorRémi Denis-Courmont <remi@remlab.net>
Mon, 6 Jul 2009 20:50:03 +0000 (23:50 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Mon, 6 Jul 2009 20:50:03 +0000 (23:50 +0300)
This fixes a corner case:
A: rdlock -> OK
B: wrlock -> sleeps
A: rdlock -> dead lock

src/misc/w32thread.c

index a696dd1d6356ab22e0d1a3c7fc4ed08522b84b3f..1398159b838bd47007985d2b7f64da8f38a32518 100644 (file)
@@ -320,7 +320,7 @@ void vlc_rwlock_destroy (vlc_rwlock_t *lock)
 void vlc_rwlock_rdlock (vlc_rwlock_t *lock)
 {
     vlc_mutex_lock (&lock->mutex);
-    while (lock->writers > 0) /* Favor writers to avoid starving */
+    while (lock->writer != 0)
         vlc_cond_wait (&lock->read_wait, &lock->mutex);
     if (lock->readers == ULONG_MAX)
         abort ();