| Prev Next | OpenBSD and Rthreads | Slide #26 | 
Inefficient
pthread_cond_broadcast() wakes up everyone, but they all have to immediately block on the mutex
Not Safe
        T1: mutex_lock(&mutex)
        T1: cond_wait(&cond, &mutex)                    /* down */
                        T2: mutex_lock(&mutex)
                        T2: cond_signal(&cond)          /* up */
                        T2: cond_wait(&cond, &mutex)    /* down */
pthread_cond_signal() could consume its own signal
non-compliant
programs *do* depend on that not happening
| EuroBSDCon 2012 | Copyright © 2012 Philip Guenther |