Skip to content

Instantly share code, notes, and snippets.

@MSch
Last active January 2, 2016 09:09

Revisions

  1. MSch revised this gist Jan 6, 2014. 2 changed files with 12 additions and 147 deletions.
    132 changes: 0 additions & 132 deletions result.txt
    Original file line number Diff line number Diff line change
    @@ -1,132 +0,0 @@
    Get 0:
    Get 21:
    Get 1:
    Get 12:
    Get 14:
    Get 16:
    Get 17:
    Get 20:
    Get 10:
    Get 5:
    Get 7:
    Get 9:
    Get 11:
    Get 11:
    Get 12:
    Get 15:
    Get 17:
    Get 19:
    Get 13:
    Get 18:
    Get 3:
    Get 12:
    Get 15:
    Get 16:
    Get 18:
    Get 6:
    Get 20:
    Get 8:
    Get 13:
    Get 15:
    Get 17:
    Get 19:
    Get 21:
    Get 11:
    Get 13:
    Get 14:
    Get 16:
    Get 19:
    Get 21:
    Get 21:
    Get 12:
    Get 14:
    Get 17:
    Get 18:
    Get 19:
    Get 13:
    Get 16:
    Get 20:
    Get 19:
    Get 11:
    Get 13:
    Get 14:
    Get 17:
    Get 18:
    Get 20:
    Get 14:
    Get 13:
    Get 21:
    Get 12:
    Get 14:
    Get 16:
    Get 18:
    Get 20:
    Get 19:
    Get 11:
    Get 13:
    Get 15:
    Get 17:
    Get 19:
    Get 14:
    Get 18:
    Get 11:
    Get 15:
    Get 18:
    Get 12:
    Get 11:
    Get 16:
    Get 21:
    Get 14:
    Get 20:
    Get 16:
    Get 19:
    Get 15:
    Get 17:
    Get 21:
    Get 15:
    Get 17:
    Get 21:
    Get 16:
    Get 20:
    Get 16:
    Get 2:
    Get 15:
    Get 20:
    Get 15:
    Get 11:
    Get 21:
    Get 13:
    Get 19:
    Get 12:
    Get 20:
    Get 12:
    Get 12:
    Get 13:
    Get 16:
    Get 18:
    Get 20:
    Get 21:
    Get 18:
    Get 12:
    Get 14:
    Get 17:
    Get 14:
    Get 17:
    Get 13:
    Get 4:
    Get 18:
    Get 15:
    Get 11:
    Get 11:
    Get 13:
    Get 15:
    Get 17:
    Get 19:
    Get 11:
    Get 21:
    Get 14:
    Get 18:
    Get 19:
    Get 16:
    Get 12:
    Get 20:
    27 changes: 12 additions & 15 deletions thread.rb
    Original file line number Diff line number Diff line change
    @@ -1,20 +1,17 @@
    threads = []

    11.times do |i|
    threads << Thread.new(i) do |v|
    $stdout.puts "Get #{v}: #{Thread.current.thread_variable_get(:foo)}"
    Thread.current.thread_variable_set(:foo, "bar#{v}")

    sub_threads = []
    11.times do |ii|
    sub_threads << Thread.new(ii + 11) do |vv|
    $stdout.puts "Get #{vv}: #{Thread.current.thread_variable_get(:foo)}"
    Thread.current.thread_variable_set(:foo, "bar#{vv}")
    end
    module ActiveRecord
    class Connection
    def connect
    Thread.current.thread_variable_set(:connection_id, 123)
    end
    end
    end

    sub_threads.map(&:join)
    module Sequel
    class Connection
    def connect
    Thread.current.thread_variable_set(:connection_id, 234)
    end
    end
    end

    threads.map(&:join)
    # Both ActiveRecord and Sequel access the same connection_id thread local variable.
  2. @envygeeks envygeeks created this gist Jan 6, 2014.
    132 changes: 132 additions & 0 deletions result.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,132 @@
    Get 0:
    Get 21:
    Get 1:
    Get 12:
    Get 14:
    Get 16:
    Get 17:
    Get 20:
    Get 10:
    Get 5:
    Get 7:
    Get 9:
    Get 11:
    Get 11:
    Get 12:
    Get 15:
    Get 17:
    Get 19:
    Get 13:
    Get 18:
    Get 3:
    Get 12:
    Get 15:
    Get 16:
    Get 18:
    Get 6:
    Get 20:
    Get 8:
    Get 13:
    Get 15:
    Get 17:
    Get 19:
    Get 21:
    Get 11:
    Get 13:
    Get 14:
    Get 16:
    Get 19:
    Get 21:
    Get 21:
    Get 12:
    Get 14:
    Get 17:
    Get 18:
    Get 19:
    Get 13:
    Get 16:
    Get 20:
    Get 19:
    Get 11:
    Get 13:
    Get 14:
    Get 17:
    Get 18:
    Get 20:
    Get 14:
    Get 13:
    Get 21:
    Get 12:
    Get 14:
    Get 16:
    Get 18:
    Get 20:
    Get 19:
    Get 11:
    Get 13:
    Get 15:
    Get 17:
    Get 19:
    Get 14:
    Get 18:
    Get 11:
    Get 15:
    Get 18:
    Get 12:
    Get 11:
    Get 16:
    Get 21:
    Get 14:
    Get 20:
    Get 16:
    Get 19:
    Get 15:
    Get 17:
    Get 21:
    Get 15:
    Get 17:
    Get 21:
    Get 16:
    Get 20:
    Get 16:
    Get 2:
    Get 15:
    Get 20:
    Get 15:
    Get 11:
    Get 21:
    Get 13:
    Get 19:
    Get 12:
    Get 20:
    Get 12:
    Get 12:
    Get 13:
    Get 16:
    Get 18:
    Get 20:
    Get 21:
    Get 18:
    Get 12:
    Get 14:
    Get 17:
    Get 14:
    Get 17:
    Get 13:
    Get 4:
    Get 18:
    Get 15:
    Get 11:
    Get 11:
    Get 13:
    Get 15:
    Get 17:
    Get 19:
    Get 11:
    Get 21:
    Get 14:
    Get 18:
    Get 19:
    Get 16:
    Get 12:
    Get 20:
    20 changes: 20 additions & 0 deletions thread.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,20 @@
    threads = []

    11.times do |i|
    threads << Thread.new(i) do |v|
    $stdout.puts "Get #{v}: #{Thread.current.thread_variable_get(:foo)}"
    Thread.current.thread_variable_set(:foo, "bar#{v}")

    sub_threads = []
    11.times do |ii|
    sub_threads << Thread.new(ii + 11) do |vv|
    $stdout.puts "Get #{vv}: #{Thread.current.thread_variable_get(:foo)}"
    Thread.current.thread_variable_set(:foo, "bar#{vv}")
    end
    end

    sub_threads.map(&:join)
    end
    end

    threads.map(&:join)