原です。

わたなべさん、いつも rbdj, rbgw の作成ありがとう
ございます。

rbgw では thread と socket を組み合わせてもちゃん
と動いているので驚きました。

ところで、ブロックする例があったので、報告しておき
ます。たとえば lib/tsvr.rb などは動くのですが、次
のコードは rbgw では accept でブロックします。

-----^ test.rb
require "socket"

$quit = TRUE
$stdout.sync = TRUE

gs = TCPserver.open(80)

if $quit
  Thread.start do
    gets
    exit
  end
end

while TRUE
  print "accepting...\n"
  ns = gs.accept
  print(ns, " is accepted\n")
  Thread.start do
    s =	ns			# save to dynamic variable
    while s.gets
      s.write($_)
      print($_)
    end
    print(s, " is gone\n")
    s.close
  end
end
-----$ test.rb


BOW では動きます。