Guest User

Untitled

a guest
Dec 10th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.60 KB | None | 0 0
  1. Mutex counter_mutex;
  2. Condition read_phase, write_phase;
  3. int resource_counter = 0;
  4.  
  5. // READERS
  6. Lock(counter_mutex) {
  7. while(resource_counter == -1)
  8. Wait(counter_mutex, read_phase);
  9. resource_counter++;
  10. } // unlock
  11. // ... read data ...
  12. Lock(counter_mutex) {
  13. resource_counter--;
  14. if(resource_counter == 0)
  15. Signal(write_phase);
  16. } // unlock
  17.  
  18. // WRITER
  19. Lock(counter_mutex) {
  20. while(resource_counter != 0)
  21. Wait(counter_mutex, write_phase);
  22. resource_counter = -1;
  23. } // unlock
  24. // ... write data ...
  25. Lock(counter_mutex) {
  26. resource_counter = 0;
  27. Broadcast(read_phase);
  28. Signal(write_phase);
  29. } // unlock
Add Comment
Please, Sign In to add comment