Advertisement
Guest User

Untitled

a guest
Apr 24th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.48 KB | None | 0 0
  1. print_monitor = Monitor.new
  2. q = Queue.new
  3. producer = Thread.new {
  4. c = 0
  5. while true do
  6. q << c
  7. c += 1
  8. puts q.size # added print without synchronization
  9. end
  10. }
  11. printer1 = Thread.new {
  12. while true
  13. val = q.shift
  14. print_monitor.synchronize do
  15. puts "Thread 1: #{val}"
  16. end
  17. end
  18. }
  19. printer2 = Thread.new {
  20. while true
  21. val = q.shift
  22. print_monitor.synchronize do
  23. puts "Thread 2: #{val}"
  24. end
  25. end
  26. }
  27. [producer, printer1, printer2].each { |t| t.join }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement