[#13273] Ruby anywhere — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです.rubyistモード.
なひです.
なひです.まったく何書いてんだか... > 自分 ^^;
なひです.もちろん「Dummy」なのは私です.^^;
前田です。
松尾です。
だんのです。
原です。
なひです.
青山です。
なひです.
青山です。
松尾です。
前田です。
なひです.
前田です。
なひです.
稲葉です。
なひです.眠い...
> > > 「call-by-referenceで」もちょっと言葉が違うような。
原です。
前田です。
原です。
だんのです。
青山です。
原です。
前田です。
前田です。
まつもと ゆきひろです
原です。
青山です。
Shugo Maeda <shugo@netlab.co.jp> writes:
前田です。
原です。
原です。
ごとけんです
原です。
青山です。
原です。
青山です。
青山です。
原です。
ごとけんです
原です。
ごとけんです
ごとけんです
まつもと ゆきひろです
原です。
ごとけんです
原です。
In message "[ruby-list:13884] Re: What is Object in Ruby? (Re: Ruby and LISP)"
ごとけんです
青山です。
原です。
ごとけんです
前田です。
ごとけんです
前田です。
ごとけんです
ごとけんです
まつもと ゆきひろです
まつもと ゆきひろです
Shugo Maeda <shugo@netlab.co.jp> writes:
前田です。
Shugo Maeda <shugo@netlab.co.jp> writes:
原です。
前田です。
[#13274] Ruby Home Page — WATANABE Tetsuya <tetsu@...>
◎要求推察機能搭載
[#13288] big ruby program — kikutani@...
今までrubyで書かれた、もっとも大きなプログラム
[#13383] — Inaba Hiroto <inaba@...>
稲葉です.
In message <9904070229.AA11857@tux0017.sdd.tokyo-sc.toshiba.co.jp>
稲葉です。これも出しなおしです.
In message <9904080032.AA17943@tux0017.sdd.tokyo-sc.toshiba.co.jp>
稲葉です。
青山です。
[#13427] inline callback — Masatoshi SEKI <m_seki@...>
[#13436] Re: Ruby and LISP ( was Re: Ruby anywhere ) — 助田 雅紀 <masaki.suketa@...>
助田です.
[#13445] Re: constant/immutable(Re: Ruby and LISP) — 助田 雅紀 <masaki.suketa@...>
助田です.全然 Ruby と関係ないですが.
[#13502] Re: Ruby and LISP ( was Re: Ruby anywhere ) — "豊福" <toyofuku@...>
豊福@パパイヤです。
原です。
原です。
[#13506] telnet.rb STDOUT — kikutani@...
昨日書いた、proxy経由でpopするやつですが、
青山です。
青山です。
On Fri, 9 Apr 1999 22:08:09 +0900,
青山です。
青山です。
[#13525] Re: iterator for Dummies( was Re: Ruby anyw here ) — 助田 雅紀 <masaki.suketa@...>
助田です.ちょっと長いです.
[#13541] iterator <-> cursor (Re: iterator for Dummies) — Inaba Hiroto <inaba@...>
稲葉です.
[#13582] Dir.foreach — greentea@...2.so-net.ne.jp (Tomoyuki Kosimizu)
こんにちは、越水です。
[#13588] /.*\n$/ — kikutani@...
if "hoge\n" =~ /.*\n$/
[#13607] Re: iterator for Dummies( was Re: Ruby anyw here ) — 助田 雅紀 <masaki.suketa@...>
助田です.
前田です。
[#13644] bbs — kikutani@...
rubyで書かれたWebの掲示板てありましたっけ?
初めて投稿します。多田@S.P.C.です。
On Tue, 13 Apr 1999 11:16:47 +0900,
松尾です。
多田@S.P.C.です。
bbsのスレッドがこんなに盛り上るとは思わなかった...
On Tue, 13 Apr 1999 13:47:42 +0900,
こんばんは。鈴木教郎です。
[#13646] Re: internal/external iterator (was Re: ite rator for Dummies) — 助田 雅紀 <masaki.suketa@...>
助田です.
[#13673] ruby 1.2.5 is released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#13680] FW: ruby-1.2.5 mkconfig.rb — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです.
まつもと ゆきひろです
土岐です。
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです
小松です。
まつもと ゆきひろです
[#13688] What is callcc? (Re: iterator <-> cursor) — toyofuku@...
豊福@パパイヤです。
[#13697] ruby で MIDI — Keisuke Minami <keisuke@...>
三並です。
[#13710] private singleton method — thitoshi@... (TAKAHASHI Hitoshi)
[#13712] IPv6-ready ruby (Forward: [ruby-talk:00274]) — gotoken@... (GOTO Kentaro)
ごとけんです
まつもと ゆきひろです
ももちゃんです.
まつもと ゆきひろです
ももいちゃんです.
まつもと ゆきひろです
[#13720] Re: What is callcc? (Re: iterator <-> cursor) — toyofuku@...
豊福@パパイヤです。
まつもと ゆきひろです
[#13741] Re: iterator — "豊福" <toyofuku@...>
豊福@パパイヤです。
[#13762] accepting multiple TCPserver — Jun-ichiro itojun Hagino <itojun@...>
[#13810] style — Kikutani Makoto <kikutani@...>
仕事がいまいちやる気にならんので(毎度のことだが)雑談です。
[#13811] ping.rb で false — Yoshiki Wada <wada@...>
和田と言います。
[#13865] cross-reference duplication — Ryunosuke Ohshima <ryu@...>
はじめまして、大島@北陸先端科学技術大学院大学と申します。
[#13867] Re: What is Object in Ruby? (Re: Ruby and LISP) — toyofuku@...
豊福@パパイヤです。
青山です。
まつもと ゆきひろです
青山です。
まつもと ゆきひろです
[#13894] FreeBSD port kit for some extention modules and applications — Yasuhiro Fukuma <yasuf@...>
福間@福岡 です。
[#13903] timer — hisanori@...
松尾です。
まつもと ゆきひろです
松尾です.
まつもと ゆきひろです
松尾です.
まつもと ゆきひろです
matz@netlab.co.jp (Yukihiro Matsumoto) writes:
In message <371F9FC120.AA42.anakamur@exa.i-tech.co.jp>
In message <371FE23633A.D92F.anakamur@exa.i-tech.co.jp>
[#13927] Re: Thread GC (Re: Re: timer) — Inaba Hiroto <inaba@...>
稲葉です.
[#13930] mod_ruby 0.1.0 — Shugo Maeda <shugo@...>
前田です。
[#13948] Re: What is Object in Ruby? (Re: Ruby and LISP) — toyofuku@...
豊福@パパイヤです。
青山です。
[#13951] Message of Today in 1999/04/20. — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです.
[#13967] Proc.new — akendo@...3.rim.or.jp
遠藤です。Ruby/Tkで楽しく遊ばせていただいています。
まつもと ゆきひろです
遠藤です。問題の記述が悪くて申し訳ありません。
[#14014] Re: What is callcc? (Re: iterator <-> cursor) — toyofuku@...
豊福@パパイヤです。
[#14037] TMail について — 民斗 <tommy@...>
民斗です。
あおきです。報告ありがとうございます。
民斗です。
わたなべです.
あおきです。
わたなべです.
In ruby-list, you wrote:
まつもと ゆきひろです
五樹島です。お世話になっております。
こんにちは。鈴木教郎です。
原です。
あおきです。
[#14038] ttyname(3) — gotoken@... (GOTO Kentaro)
ごとけんです
[#14054] 今日の一言 — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
[#14070] — Kazunori Akaishi <akaishi@...>
akaishi です。
[ruby-list:13762] accepting multiple TCPserver
ひとつのプログラムの中で、複数のTCPserverを同時に待ち受けたい
ことがあります。たとえば、
s1 = TCPserver.new(8888)
s2 = TCPserver.new(8889)
としたふたつのTCPsever classのインスタンスをthread使って待ちたい、
ということです。
ところが、添付のようなコードでやってみるとaccept system callが
起きません。Thread.startをforkにするとうまく動きます。
症状としては、
- Thread.startのあとls.acceptしたところで、ext/socket/socket.cの
s_accept()にたどりつきます。
ここで、生成されたthreadはrb_thread_wait_fd()に行ったきり、
二度とrescheduleされません(のでaccept system callは起きません)。
最初に走っているthreadはさっくり
(0 .. sockpool.size - 1).each do |i|
を終ってしまって結局なにもしてくれません。
というかんじです。
FreeBSD 2.2.xとBSDI BSD/OS 3.1、ruby 1.0、1.2.5と1.3.2(昨日)で
確認しています。
多分わたくしがrubyアマチュアでスクリプト的に間違えているのだと
ですが、どこがいけないのかごぞんじな方、ヒントを頂けないでしょうか?
(C一般の)multi thread programmingもあまり知らないので、ちょっと
追ってみましたがどうするのが適切かわかりませんでした。
itojun
---
# simple httpd
# The code demonstrates how a multi-protocol daemon should be written.
# CAVEAT:
# "fork" cannot be replaced with "Thread.start" because TCPserver does not
# support multi-threading in TCPserver.accept (at least in ruby 1.2.5).
# Frankly, fork isn't really necessary. I hoped to use Thread.start but
# I just couldn't.
require "socket"
require "thread"
# For IPv6
#port = 8888
#res = Socket.getaddrinfo(nil, port, nil, Socket::SOCK_STREAM, nil, Socket::AI_PASSIVE)
#sockpool = []
#names = []
#res.each do |i|
# s = TCPserver.new(i[3], i[1])
# n = Socket.getnameinfo(s.getsockname, Socket::NI_NUMERICHOST|Socket::NI_NUMERICSERV).join(" port ")
# sockpool.push s
# names.push n
#end
# for IPv4 test
port = 8888
sockpool = []
names = []
(0 .. 2).each do |i|
s = TCPserver.new(port + i)
t = s.addr
n = sprintf("%s port %d", t[3], t[1])
sockpool.push s
names.push n
end
(0 .. sockpool.size - 1).each do |i|
mysock = sockpool[i]
myname = names[i]
STDERR.print "socket #{mysock} started, address #{myname}\n"
# fork do
Thread.start do
ls = mysock # copy to dynamic variable
STDERR.print "socket #{myname} started, pid #{$$}\n"
while TRUE
as = ls.accept
Thread.start do
STDERR.print "socket #{myname} accepted, thread ", Thread.current, "\n"
s = as # copy to dynamic variable
str = s.gets
STDERR.print "socket #{myname} got string\n"
s.write("Content-type: text/plain\n\n")
s.write("this is test: my name is #{myname}, you sent:\n")
s.write("---start\n")
s.write(str)
s.write("---end\n")
s.close
STDERR.print "socket #{myname} processed, thread ", Thread.current, " terminating\n"
end
end
exit 0
end
end
sleep 1 # just for message sequencing...
STDERR.print "I have #{sockpool.size} children\n"
(0 .. sockpool.size - 1).each do |i|
STDERR.print Process.wait, " seems to be dead\n"
end
STDERR.print "all children seems to be dead, bye\n"