Guest User

Untitled

a guest
Jan 21st, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.81 KB | None | 0 0
  1. ------------------------ Code
  2.  
  3. ------ Threads A/B
  4.  
  5. {
  6.   pthread_mutex_lock(mutex)
  7.   while (m_size == 0)
  8.       pthread_cond_wait(cond);
  9.  
  10.   m_size--
  11.   pthread_mutex_unlock(mutex)
  12. }
  13.  
  14. ------ Threads C
  15. {
  16.   .. do some work ..
  17.   pthread_mutex_lock(mutex)
  18.   m_size = 5;
  19.   pthread_mutex_signal(cond);
  20.   pthread_mutex_unlock(mutex);
  21. }
  22.  
  23.  
  24. Thread A            Thread B            Thread C
  25.  
  26. pthread_mutex_lock(mutex)
  27. while (m_size == 0)
  28. pthread_cond_wait(cond)
  29.                 pthread_mutex_lock(mutex)
  30.                 while (m_size == 0)
  31.                 pthread_cond_wait(cond)
  32.                                 .. do some work ..
  33.                                 pthread_mutex_lock(mutex)
  34.                                 m_size = 1;
  35.                                 pthread_cond_signal(cond);
  36.                                 pthread_mutex_unlock(mutex);
  37. while (m_size > 0)
  38.                 while (m_size > 0)     
  39. m_size--
  40.                 m_size--
  41. pthread_mutex_unlock(mutex)
  42.                 pthread_mutex_unlock(mutex)
Add Comment
Please, Sign In to add comment