逆引きRubyは,各項目についてまとめられており非常に有用なサイトです。
スレッドのところを読んだのですが,その中の「スレッドで通信する」とういうところで,以下のようなサンプルがあります。
require "thread" q = Queue.new t = Thread.new do loop do n = q.pop if n.to_i>=0 val = Math::sqrt(n) puts "Square(#{n}) = #{val}" else puts "?" end end end while line = gets if line.chop! == "." break else q.push(line) end end
標準入力から数値を入力する前に,n = q.popはどんな動作をするんだろうと疑問を持ったのですが,Rubyリファレンスマニュアルによると
スレッドが空のqueueを読み出そうとすると停止します。queueになんらかの情報が書き込まれると実行は再開されます。
とありました。疑問解決です。