From: Pit Capitain Date: 2007-02-08T23:18:57+09:00 Subject: Re: Threads and external methods Hi wd! > If I have require'd a module ... BTW: in Ruby you require a file, which might contain a module definition. > ...and call a method within that module from > within a thread, do all the variables within that external module need > to be made thread safe? In this context, it doesn't matter whether the code you execute comes from an "external" module or not. > test.rb ==> > require 'mod' > threads = [] > (1..20).each do > threads << Thread.new( var ) { |var| > # call a function/method within mod > modFunction( var ) > } > threads.each {|a| a.join} Where does the variable "var" which you pass to Thread.new come from? What value does it have? Are you deliberately using the name "var" as the name of both a local variable and a block parameter? > mod.rb ==> > def modFunction( myvar ) > # do lotsa copmlex stuff with myvar > .... > end > > === > > Does the 'myvar' variable above need to be 'Thread.current[ "myvar" ]' > instead? I don't think so. Maybe you can show us a short working example of your code and tell us what didn't work as you expected. Regards, Pit