Я запускаю скрипт ruby, который создает несколько потоков.
Я хочу, чтобы потоки имели доступ к общей переменной, которая позволяет основному потоку знать, когда присоединяться к потокам.
Я пытаюсь сделать это с помощью глобальной переменной $, нокажется, что потоки не могут получить доступ к $ global.
class IO_
def change(number)
sleep(60 * number)
$trade_executed = true
end
end
io = IO_.new
numbers = 1, 2
$threads = {}
$trade_executed = false
def start_threads(numbers)
numbers.each do |number|
$threads[number] = Thread.new {io.change(number)}
end
end
start_threads(numbers)
while true
p $trade_executed
p $threads
sleep(10)
end
Вышеуказанный $ trade_executed всегда будет иметь значение «false».
Но если я переместу изменение метода за пределы объекта io, оно сработает.