Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- print_monitor = Monitor.new
- q = Queue.new
- producer = Thread.new {
- c = 0
- while true do
- q << c
- c += 1
- puts q.size # added print without synchronization
- end
- }
- printer1 = Thread.new {
- while true
- val = q.shift
- print_monitor.synchronize do
- puts "Thread 1: #{val}"
- end
- end
- }
- printer2 = Thread.new {
- while true
- val = q.shift
- print_monitor.synchronize do
- puts "Thread 2: #{val}"
- end
- end
- }
- [producer, printer1, printer2].each { |t| t.join }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement