Threads and external methods

W

Wonderdog

If I have require'd a module 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?

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}

mod.rb ==>
def modFunction( myvar )
# do lotsa copmlex stuff with myvar
....
end

===

Does the 'myvar' variable above need to be 'Thread.current[ "myvar" ]'
instead?

Thanks for helping this noob out!
wd
 
P

Pit Capitain

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
 
P

Pit Capitain

Pit said:
(...) Maybe you can show us a short working example of your
code and tell us what didn't work as you expected.

Sorry, what I meant was a short example code that can be executed...

Regards,
Pit
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,022
Latest member
MaybelleMa

Latest Threads

Top