threads/sleeping_hands_turns_no_parens.rb
tests/_examples/threads/sleeping_hands_turns_no_parens.rb in the metorex repository.
# A thread that sleeps for a length lets the other threads run until the
# length passes, and a sleep is cut short by a wakeup.
log = []
sleeper = Thread.new do
log << :sleeper_start
sleep 0.05
log << :sleeper_end
end
worker = Thread.new { log << :worker }
[sleeper, worker].each(&:join)
p log
napper = Thread.new { sleep 5 }
Thread.pass until napper.status == "sleep"
napper.wakeup
p napper.value
Output:
[:sleeper_start, :worker, :sleeper_end]
0