Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What happens if no threads are waiting and condition signal was sent?

Tags:

c++

pthreads

What happens if all threads are busy and main thread has sent thread cond signal ?

1 Main Thread and 3 pthreads in thread pool. 3 pthreads are in status of

    pthread_mutex_lock(&sync_mutex);
    pthread_cond_wait(&sync_cond, &sync_mutex);
    pthread_mutex_unlock(&sync_mutex);

Main thread has sent Signal to wake up the threads to process the work. In this situation, What if 3 threads are already busy and next signal has arrived?

like image 926
Jae Park Avatar asked Mar 07 '12 08:03

Jae Park


2 Answers

Nothing. The signal disappears.

like image 58
zvrba Avatar answered Oct 24 '22 08:10

zvrba


If your using one of the following functions:

pthread_cond_signal - restarts one of the threads that are waiting on the condition variable cond. pthread_cond_broadcast - wake up all threads blocked by the specified condition variable.

The manual states that

The pthread_cond_broadcast() and pthread_cond_signal() functions shall have no effect if there are no threads currently blocked on cond.

like image 37
bruno Avatar answered Oct 24 '22 08:10

bruno