This is easy using monitors. : Synchronization « Threads « Ruby






This is easy using monitors.


require 'monitor' 

class Counter < Monitor 
    attr_reader :count 

    def initialize 
        @count = 0 
        super 
    end 

    def tick 
        synchronize do 
        @count += 1 
    end 
    end 
end 
c = Counter.new 
t1 = Thread.new { 10000.times { c.tick } } 
t2 = Thread.new { 10000.times { 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.Use monitor to lock
4.make specific objects into monitors.
5.Synchronizing Access to an Object