From 231661e46c865881aa5bf5da05756622da5baa58 Mon Sep 17 00:00:00 2001 From: Philip Withnall <withnall@endlessm.com> Date: Fri, 31 May 2019 21:36:34 +0100 Subject: [PATCH] gthread: Fix g_rw_lock_reader_lock() documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The documentation erroneously said that a thread calling g_rw_lock_reader_lock() would always block if another thread was waiting for the write lock. That’s not true: if no thread holds the lock, it is implementation defined which of a waiting reader and writer gets the lock. See http://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_rwlock_rdlock.html. Signed-off-by: Philip Withnall <withnall@endlessm.com> Fixes: #590 --- glib/gthread-posix.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/glib/gthread-posix.c b/glib/gthread-posix.c index 1e2fdb59a..8b8561639 100644 --- a/glib/gthread-posix.c +++ b/glib/gthread-posix.c @@ -587,8 +587,10 @@ g_rw_lock_writer_unlock (GRWLock *rw_lock) * @rw_lock: a #GRWLock * * Obtain a read lock on @rw_lock. If another thread currently holds - * the write lock on @rw_lock or blocks waiting for it, the current - * thread will block. Read locks can be taken recursively. + * the write lock on @rw_lock, the current thread will block. If another thread + * does not hold the write lock, but is waiting for it, it is implementation + * defined whether the reader or writer will block. Read locks can be taken + * recursively. * * It is implementation-defined how many threads are allowed to * hold read locks on the same lock simultaneously. If the limit is hit,