Mega Code Archive

 
Categories / Ruby / Threads
 

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