Несколько потоков, вызывающих одну и ту же функцию

Предположим, у нас есть несколько потоков, вызывающих одну и ту же функцию:

def foo 
  # do stuff...
end

100.times do |i|
  Thread.new do
    foo
  end
end

Если два или более потока в настоящее время находятся внутри foo, каждый из них использует один и тот же локальные переменные внутри foo?

Это относится к моему второму вопросу. Имеют ли потоки отдельные кадры стека или они совместно используют кадры стека в рамках одного процесса? В частности, когда каждый из нескольких потоков вызывает fooи до возврата foo, есть ли в стеке несколько копий foo, каждая со своими локальными переменными, или в стеке только одна копия foo?

8
задан Andrew Marshall 6 May 2012 в 00:46
поделиться