小林栄と申します。

多数のThreadを起した場合の、全てのThreadが終了してくれたかを
判定する、スマートなやりかたって有りますでしょうか?

思いついたのは alive? を使う方法ですが、Thread数が多くなってくると
無駄なような気がしてます。

tid = Array.new

def sim( n )
	t = rand(10)
        print "Enter ",n,", sleep ", t ,"\n"
	sleep t
	print "  Exit ",n,"\n"
end

st = Time.now
for i in 0 .. 3
  tid[ i ] = Thread.start( i ) do
    sim( i )
  end
end

# All Thread fin ?
for i in 0 .. 3
	retry if tid[ i ].alive?
end

print "exec time= ", Time.now - st, "\n"

--
E-mail:  sakae / ps.ksky.ne.jp
URL:     http://www.ksky.ne.jp/~sakae/