[#13273] Ruby anywhere — "NAKAMURA, Hiroshi" <nakahiro@...>

なひです.rubyistモード.

262 messages 1999/04/01
[#13305] Re: Ruby anywhere — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/04/05

なひです.

[#13308] Re: Ruby anywhere — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/04/05

なひです.まったく何書いてんだか... > 自分 ^^;

[#13309] Re: Ruby anywhere — 中村暁史 <anakamur@...> 1999/04/05

[#13310] iterator for Dummies( was Re: Ruby anywhere ) — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/04/05

なひです.もちろん「Dummy」なのは私です.^^;

[#13313] Re: iterator for Dummies( was Re: Ruby anywhere ) — Shugo Maeda <shugo@...> 1999/04/05

前田です。

[#13314] Re: iterator for Dummies( was Re: Ruby anywhere ) — hisanori@... 1999/04/06

松尾です。

[#13317] Re: iterator for Dummies( was Re: Ruby anywhere ) — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/04/06

なひです.

[#13330] Re: iterator for Dummies( was Re: Ruby anywhere ) — Wakou Aoyama <wakou@...> 1999/04/06

青山です。

[#13363] Re: iterator for Dummies( was Re: Ruby anywhere ) — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/04/06

なひです.

[#13367] Re: iterator for Dummies( was Re: Ruby anywhere ) — Wakou Aoyama <wakou@...> 1999/04/06

青山です。

[#13312] Re: Ruby anywhere — Inaba Hiroto <inaba@...> 1999/04/05

稲葉です。

[#13371] Re: Ruby and LISP ( was Re: Ruby anywhere ) — takagi@... (TAKAGI, Hiromitsu) 1999/04/06

> > > 「call-by-referenceで」もちょっと言葉が違うような。

[#13377] Re: Ruby and LISP ( was Re: Ruby anywhere ) — Shin-ichiro Hara <sinara@...> 1999/04/07

原です。

[#13378] Re: Ruby and LISP ( was Re: Ruby anywhere ) — Shugo Maeda <shugo@...> 1999/04/07

前田です。

[#13380] Re: Ruby and LISP ( was Re: Ruby anywhere ) — Shin-ichiro Hara <sinara@...> 1999/04/07

原です。

[#13390] Re: Ruby and LISP ( was Re: Ruby anywhere ) — Wakou Aoyama <wakou@...> 1999/04/07

青山です。

[#13398] Re: Ruby and LISP ( was Re: Ruby anywhere ) — Shin-ichiro Hara <sinara@...> 1999/04/07

原です。

[#13399] constant/immutable(Re: Ruby and LISP) — Shugo Maeda <shugo@...> 1999/04/07

前田です。

[#13400] Re: constant/immutable(Re: Ruby and LISP) — 中村暁史 <anakamur@...> 1999/04/07

[#13474] Re: Ruby and LISP ( was Re: Ruby anywhere ) — takagi@... (TAKAGI, Hiromitsu) 1999/04/08

Shugo Maeda <shugo@netlab.co.jp> writes:

[#13490] Re: Ruby and LISP ( was Re: Ruby anywhere ) — Shugo Maeda <shugo@...> 1999/04/08

前田です。

[#13496] What is Object in Ruby? (Re: Ruby and LISP) — Shin-ichiro Hara <sinara@...> 1999/04/08

原です。

[#13800] Re: What is Object in Ruby? (Re: Ruby and LISP) — Shin-ichiro Hara <sinara@...> 1999/04/16

原です。

[#13805] Re: What is Object in Ruby? (Re: Ruby and LISP) — gotoken@... (GOTO Kentaro) 1999/04/16

ごとけんです

[#13808] Re: What is Object in Ruby? (Re: Ruby and LISP) — Shin-ichiro Hara <sinara@...> 1999/04/16

原です。

[#13816] Re: What is Object in Ruby? (Re: Ruby and LISP) — Wakou Aoyama <wakou@...> 1999/04/16

青山です。

[#13824] Re: What is Object in Ruby? (Re: Ruby and LISP) — Shin-ichiro Hara <sinara@...> 1999/04/16

原です。

[#13830] Re: What is Object in Ruby? (Re: Ruby and LISP) — Wakou Aoyama <wakou@...> 1999/04/16

青山です。

[#13839] Re: What is Object in Ruby? (Re: Ruby and LISP) — Wakou Aoyama <wakou@...> 1999/04/17

青山です。

[#13842] Re: What is Object in Ruby? (Re: Ruby and LISP) — Shin-ichiro Hara <sinara@...> 1999/04/17

原です。

[#13856] Re: What is Object in Ruby? (Re: Ruby and LISP) — gotoken@... (GOTO Kentaro) 1999/04/18

ごとけんです

[#13872] Re: What is Object in Ruby? (Re: Ruby and LISP) — Shin-ichiro Hara <sinara@...> 1999/04/19

原です。

[#13880] Re: What is Object in Ruby? (Re: Ruby and LISP) — gotoken@... (GOTO Kentaro) 1999/04/19

ごとけんです

[#13883] destructive methods (Re: Re: What is Object in Ruby?) — matz@... (Yukihiro Matsumoto) 1999/04/19

[#13621] Integer[num] (Re: Ruby and LISP) — gotoken@... (GOTO Kentaro) 1999/04/12

ごとけんです

[#13622] Re: Integer[num] (Re: Ruby and LISP) — Shugo Maeda <shugo@...> 1999/04/12

前田です。

[#13624] Re: Integer[num] (Re: Ruby and LISP) — gotoken@... (GOTO Kentaro) 1999/04/12

ごとけんです

[#13630] Re: Integer[num] (Re: Ruby and LISP) — Shugo Maeda <shugo@...> 1999/04/12

前田です。

[#13675] Re: Integer[num] (Re: Ruby and LISP) — gotoken@... (GOTO Kentaro) 1999/04/13

ごとけんです

[#13677] Re: Integer[num] (Re: Ruby and LISP) — 中村暁史 <anakamur@...> 1999/04/13

[#13690] Flyweight (Re: Integer[num]) — gotoken@... (GOTO Kentaro) 1999/04/13

ごとけんです

[#23715] Re: Flyweight (Re: Integer[num]) — Masatoshi SEKI <m_seki@...> 2000/07/05

[#23718] context switch during finalizer(Re: Re: Flyweight) — matz@... (Yukihiro Matsumoto) 2000/07/06

まつもと ゆきひろです

[#23727] Re: context switch during finalizer(Re: Re: Flyweight) — Masatoshi SEKI <m_seki@...> 2000/07/06

[#13516] Re: Ruby and LISP ( was Re: Ruby anywhere ) — takagi@... (TAKAGI, Hiromitsu) 1999/04/08

Shugo Maeda <shugo@netlab.co.jp> writes:

[#13526] Re: Ruby and LISP ( was Re: Ruby anywhere ) — Shugo Maeda <shugo@...> 1999/04/09

前田です。

[#13568] Re: Ruby and LISP ( was Re: Ruby anywhere ) — takagi@... (TAKAGI, Hiromitsu) 1999/04/09

Shugo Maeda <shugo@netlab.co.jp> writes:

[#13383] — Inaba Hiroto <inaba@...>

稲葉です.

18 messages 1999/04/07
[#13422] Re: — kjana@... (YANAGAWA Kazuhisa) 1999/04/07

In message <9904070229.AA11857@tux0017.sdd.tokyo-sc.toshiba.co.jp>

[#13435] What is `binding' (was Re: Ruby and LISP) — Inaba Hiroto <inaba@...> 1999/04/08

稲葉です。これも出しなおしです.

[#13502] Re: Ruby and LISP ( was Re: Ruby anywhere ) — "豊福" <toyofuku@...>

豊福@パパイヤです。

16 messages 1999/04/08

[#13644] bbs — kikutani@...

rubyで書かれたWebの掲示板てありましたっけ?

31 messages 1999/04/12
[#13656] Re: bbs — TADA Tadashi <sho@...> 1999/04/13

初めて投稿します。多田@S.P.C.です。

[#13657] Re: bbs — kikutani@... 1999/04/13

On Tue, 13 Apr 1999 11:16:47 +0900,

[#13663] Re: bbs — hisanori@... 1999/04/13

松尾です。

[#13867] Re: What is Object in Ruby? (Re: Ruby and LISP) — toyofuku@...

豊福@パパイヤです。

15 messages 1999/04/19
[#13876] Re: What is Object in Ruby? (Re: Ruby and LISP) — Wakou Aoyama <wakou@...> 1999/04/19

青山です。

[#13903] timer — hisanori@...

松尾です。

24 messages 1999/04/20
[#13905] Re: timer — matz@... (Yukihiro Matsumoto) 1999/04/20

まつもと ゆきひろです

[#13910] Re: timer — hisanori@... 1999/04/20

松尾です.

[#13911] Thread GC (Re: Re: timer) — matz@... (Yukihiro Matsumoto) 1999/04/20

まつもと ゆきひろです

[#13920] Re: Thread GC (Re: Re: timer) — hisanori@... 1999/04/20

松尾です.

[#13924] Re: Thread GC (Re: Re: timer) — matz@... (Yukihiro Matsumoto) 1999/04/20

まつもと ゆきひろです

[#14037] TMail について — 民斗 <tommy@...>

民斗です。

38 messages 1999/04/24
[#14082] Re: TMail について — Minero Aoki <aamine@...> 1999/04/27

あおきです。報告ありがとうございます。

[#14088] Re: TMail について — 民斗 <tommy@...> 1999/04/28

民斗です。

[#14090] Re: TMail について — WATANABE Hirofumi <watanabe@...> 1999/04/28

わたなべです.

[#14092] Re: TMail について — Minero Aoki <aamine@...> 1999/04/28

あおきです。

[#14095] Re: TMail について — WATANABE Hirofumi <eban@...> 1999/04/29

わたなべです.

[#14096] Re: TMail について — kikutani@... 1999/04/30

In ruby-list, you wrote:

[#14099] Re: TMail について — matz@... (Yukihiro Matsumoto) 1999/04/30

まつもと ゆきひろです

[ruby-list:13762] accepting multiple TCPserver

From: Jun-ichiro itojun Hagino <itojun@...>
Date: 1999-04-15 08:09:54 UTC
List: ruby-list #13762
	ひとつのプログラムの中で、複数の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"

In This Thread

Prev Next