Sha256: 72989ba9f7c52555713a093acc13498ac73b121085708d3ef92d9d9569c11380
Contents?: true
Size: 1.73 KB
Versions: 2
Compression:
Stored size: 1.73 KB
Contents
dir = File.expand_path(File.dirname(__FILE__)) require "#{dir}/../micon_spec_helper" Thread.abort_on_exception = true describe "Micon Concurrency" do after :each do Micon.delete_all_sessions end class Counter inherit Micon::Managed scope :session def initialize; @value = 0 end attr_reader :value def increase; @value += 1 end end class Container inherit Micon::Managed scope :session inject :counter => Counter def execute_action counter.increase end end it "Concurrency Access" do Micon.activate_thread :key do Micon[Container].counter.value.should == 0 end t1 = Thread.new do 100.times do Micon.activate_thread :key do Micon[Container].counter.increase end end end t2 = Thread.new do 100.times do Micon.activate_thread :key do Micon[Container].counter.increase end end end t1.join; t2.join Micon.activate_thread :key do Micon[Container].counter.value.should == 200 end end it "Concurrency Access for :application Scope" do Micon.register(:counter, :application){0} Micon.activate_thread :key do Micon[:counter] = 0 end threads = [] 20.times do threads << Thread.new do Micon.activate_thread :key do 1000.times do Micon[:counter] += 1 end end end end threads.each{|t| t.join} Micon.activate_thread :key do Micon[:counter].should == 20000 end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ruby-ext-0.4.1 | old/old_concurrency_spec.rb |
ruby-ext-0.4.0 | old/old_concurrency_spec.rb |