Subject: CVS commit: src/lib/libpthread
To: None <source-changes@NetBSD.org>
From: Andrew Doran <ad@netbsd.org>
List: source-changes
Date: 03/20/2007 23:49:58
Module Name:	src
Committed By:	ad
Date:		Tue Mar 20 23:49:58 UTC 2007

Modified Files:
	src/lib/libpthread: pthread_cond.c

Log Message:
- When signalling waiters, try not to awaken them immediatley. If we hold
  the mutex that the waiters are using to synchronise, then transfer them
  to the mutex's waiters list so that the wakeup is deferred until release
  of the mutex. Improves the timings for CV sleep/wakeup by between 30-100%
  in tests conducted locally on a UP system. There can be a penalty for MP
  systems when only one thread is being awoken, but in practice I think it
  won't be be an issue.
- pthread_signal: search for a thread that does not have a pending wakeup.
  Threads can have a pending wakeup and still be on the waiters list if we
  clash with an earlier pthread_cond_broadcast().


To generate a diff of this commit:
cvs rdiff -r1.27 -r1.28 src/lib/libpthread/pthread_cond.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.