[ruby-list:41847] パイプ書込み時のブロック

From: sakana <sakana-ruby@...>
Date: 2006-02-23 02:40:30 UTC
List: ruby-list #41847
初めまして、sakanaと申します。

msvcおよびmingw版ruby,で1000バイト以上をパイプに書き込むとwriteがブロックしてしまうのですが、これは仕様でしょうか? 
以下コードを添付します。よろしくお願いします。

#------------------------------------------------------
require "thread"

q1 = Queue.new
q2 = Queue.new

pipe=IO.pipe
th=Thread.start {
  for i in 1..100
      pipe[1].write("a"*1024)
      q1.push nil
      q2.pop
  end
  pipe[1].close
  q1.push nil
}

data=""
while ( 1 )
  q1.pop
  break if !pipe[0].read(1024,data)
  q2.push nil
  print data
end
th.join
pipe[0].close

# 以上
--



In This Thread

Prev Next