Предположим, у нас есть несколько потоков, вызывающих одну и ту же функцию:
def foo
# do stuff...
end
100.times do |i|
Thread.new do
foo
end
end
Если два или более потока в настоящее время находятся внутри foo
, каждый из них использует один и тот же локальные переменные внутри foo
?
Это относится к моему второму вопросу. Имеют ли потоки отдельные кадры стека или они совместно используют кадры стека в рамках одного процесса? В частности, когда каждый из нескольких потоков вызывает foo
и до возврата foo
, есть ли в стеке несколько копий foo
, каждая со своими локальными переменными, или в стеке только одна копия foo
?