Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ------------------------ Code
- ------ Threads A/B
- {
- pthread_mutex_lock(mutex)
- while (m_size == 0)
- pthread_cond_wait(cond);
- m_size--
- pthread_mutex_unlock(mutex)
- }
- ------ Threads C
- {
- .. do some work ..
- pthread_mutex_lock(mutex)
- m_size = 1;
- pthread_cond_signal(cond);
- pthread_mutex_unlock(mutex);
- }
- Thread A Thread B Thread C
- pthread_mutex_lock(mutex)
- while (m_size == 0)
- pthread_cond_wait(cond)
- pthread_mutex_lock(mutex)
- while (m_size == 0)
- pthread_cond_wait(cond)
- .. do some work ..
- pthread_mutex_lock(mutex)
- m_size = 1;
- pthread_cond_signal(cond);
- pthread_mutex_unlock(mutex);
- while (m_size > 0)
- while (m_size > 0)
- m_size--
- m_size--
- pthread_mutex_unlock(mutex)
- pthread_mutex_unlock(mutex)
Add Comment
Please, Sign In to add comment