Pit Capitain
2/8/2007 2:19:00 PM
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