Use monitor to lock : Synchronization « Threads « Ruby






Use monitor to lock


require 'monitor' 
class Counter 
    attr_reader :count 

    def initialize 
        @count = 0 
    end 

    def tick 
        @count += 1 
    end 
end 


c = Counter.new 
lock = Monitor.new 


t1 = Thread.new { 10000.times { lock.synchronize { c.tick } } } 
t2 = Thread.new { 10000.times { lock.synchronize { c.tick } } } 
t1.join; t2.join 


c.count # 20000 

 








Related examples in the same category

1.Multithreads without synchronization
2.Controlling the Thread Scheduler
3.This is easy using monitors.
4.make specific objects into monitors.
5.Synchronizing Access to an Object