Broadcast the condition, if there are waiting readers, as all might read

2001-01-29  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* gthread.c: Broadcast the condition, if there are waiting
	readers, as all might read at the same time. Only signal the
	writer thread, if there are no more readers.

	* gthread/gthread-impl.c (g_mutex_free_errorcheck_impl): Add
        new check to errorcheck mutexes to abort, if a locked mutex is freed.
This commit is contained in:
Sebastian Wilhelmi
2001-01-29 16:32:26 +00:00
committed by Sebastian Wilhelmi
parent cd888afb5a
commit c96ad49767
12 changed files with 64 additions and 4 deletions

View File

@@ -517,7 +517,7 @@ static void inline g_static_rw_lock_signal (GStaticRWLock* lock)
if (lock->want_to_write && lock->write_cond)
g_cond_signal (lock->write_cond);
else if (lock->read_cond)
g_cond_signal (lock->read_cond);
g_cond_broadcast (lock->read_cond);
}
void g_static_rw_lock_reader_lock (GStaticRWLock* lock)
@@ -562,7 +562,8 @@ void g_static_rw_lock_reader_unlock (GStaticRWLock* lock)
g_static_mutex_lock (&lock->mutex);
lock->read_counter--;
g_static_rw_lock_signal (lock);
if (lock->read_counter == 0)
g_static_rw_lock_signal (lock);
g_static_mutex_unlock (&lock->mutex);
}