こんにちは、なかむら(う)です。
In message "[ruby-dev:27077] select pipe support on native Win32"
on Sep.14,2005 23:35:57, <usa / garbagecollect.jp> wrote:
| CVS trunk HEADに、native Win32なportでpipeのselectを可能とす
| るコードを入れてみました。
consoleのselectも可能になることがあるコードも入れてみました。
Thread.new {
loop {
puts "thread"
sleep 1
}
}
loop {
p gets
}
のようなコードが、一見動いてるように見えるかもしれません。
これらのコードの既知の問題点は以下の通りです。
(1) pipe、consoleとも、書き込みは常に可能であるとみなしている。
consoleはたぶんそれでよいが、pipeは2048バイトほど連続して
書き込むとそこでブロックする。要修正。
(2) consoleに関しては、入力待ちに対して改行文字以外を入力した
場合、改行文字が入力されるまで他のスレッドはブロックされる。
これはCygwin版も同様で、Rubyのスレッドをネイティブスレッド
にマッピングしない限りたぶん解決不能。
(3) Win9xではほとんどテストしてない。
WindowsMeでちょびっとだけ動かしたけど、動くような気がする
ことを確認した程度。
みなさま、気が向いたら弄ったり修正したりしてください。
それでは。
--
U.Nakamura <usa / garbagecollect.jp>