Выход из Ruby Threads - PullRequest
       1

Выход из Ruby Threads

1 голос
/ 30 марта 2019

Я читаю «Обоснованный рубист» Дэвида А. Блэка, 3-е издание.

В разделе о потоках авторский вывод следующего фрагмента кода отличается от того, что появляется в моей системе (раздел 14.5).

Thread.new do
  puts "Starting the thread"
  sleep 1
  puts "At the end of the thread"
end
puts "Outside the thread"

Авторский вывод:

Starting the thread
Outside the thread

Мой вывод только:

Outside the thread

Затем автор устанавливает блок кода в переменную t и вызывает t.join, что дает ему следующий вывод:

Starting the thread
Outside the thread
At the end of the thread

Однако мой вывод:

Outside the thread
Starting the thread
At the end of the thread

Я что-то упустил?

Я использую ruby ​​2.5.1p57 (версия 20130-03-29 63029) [x86_64-linux-gnu]

1 Ответ

1 голос
/ 30 марта 2019

Поскольку основной поток продолжает выполнять работу до запуска порожденного потока.

1, попробуйте установить спящий режим 0.1 до puts "Outside the thread"

Thread.new do
  puts "Starting the thread"
  sleep 1
  puts "At the end of the thread"
end
sleep 0.1 #let spawned thread start
puts "Outside the thread"
присоединиться до puts "Outside the thread"
Thread.new do
  puts "Starting the thread"
  sleep 1
  puts "At the end of the thread"
end.join # wait spawned thread finish
puts "Outside the thread"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...