On 04.12.2006 22:07, Alex Ciarlillo wrote: > I am trying to run 3 threads of a process using 3 sets of data. The > process is run from a class I made but for some reason when this certain > class method is called it seems to be getting the same data from each > thread. Here is the code I am using to create the threads: > > threads = [] > breakfast = ['breakfast', '12:00:a', '11:00:a'] > lunch = ['lunch', '11:01:a', '4:00:p'] > dinner = ['dinner', '4:01:p', '11:59:p'] > periods = [breakfast, lunch, dinner] > locations = [0,1,2,3,4,5] > for period in periods > threads << Thread.new(period) { You need to use a block parameter for "period" otherwise you will run into this issue: irb(main):035:0* for i in 1..5 irb(main):036:1> Thread.new(i) do |a| irb(main):037:2* sleep 0.1 irb(main):038:2> puts "[#{i}-#{a}]" irb(main):039:2> end irb(main):040:1> end => 1..5 irb(main):041:0> irb(main):042:0* [5-5][5-4][5-3][5-2][5-1] As you see, "i" is the same var for all threads - only "a" is thread local. Regards robert