Mega Code Archive

 
Categories / Ruby / Threads
 

Make specific objects into monitors

require 'monitor'  class Counter      attr_reader :count      def initialize          @count = 0      end      def tick          @count += 1      end  end  c = Counter.new  c.extend(MonitorMixin)  t1 = Thread.new { 10000.times { c.synchronize { c.tick } } }  t2 = Thread.new { 10000.times { c.synchronize { c.tick } } }  t1.join; t2.join  c.count # 20000