[ruby-list:625] Re: thread [Re: platforms (Re: NSUG ruby shoukai)]

From: matz@... (Yukihiro Matsumoto)
Date: 1996-09-27 01:42:09 UTC
List: ruby-list #625
In message "[ruby-list:618] thread [Re: platforms (Re: NSUG ruby shoukai)]"
    on 96/09/26, 石塚圭樹 <keiju@shljapan.co.jp> writes:
|
|けいじゅ@SHLジャパンです. 

|私のところも何かおかしいみたいです.

確かにおかしいですね.

|分かったことは, 
|
|1. 最初のスレッドは次のスレッドが走りはじめるまでかなり走るるらしい.
|2. 2つめのスレッドが走りはじめてからは, 大体平均的になっている
|3. 最後には出力が止まってしまった(;_;
|
|ということです. 

3つほどバグがありました.昨夜のうちに直しました.今日(時間が
取れれば)リリースしたいと思います.

 (a) コンテキスト切替えの割込みの間隔が長すぎた(1秒->50000u秒)
 (b) 一度コンテキスト切替えが起きると1 instruction毎にコンテ
     キスト切替えするようになってしまう
 (c) threadをGCしようとする時不正なアドレスにアクセスしてい
     た.マシンによってはSEGVしたり無限ループに落ちたりする

石塚さんの指摘された1はa,bの複合,2はbの結果,3はcでGCで無限
ループに落ちたせいです.SunOS4.1.3ではSEGVします.

修正版での実行結果は以下の通りです.

# ruby /tmp/thread2.rb
3552, 3552, 1577, 1577, 1975
6237, 2685, 3558, 1981, 2679
7850, 1613, 5028, 1470, 2822
10006, 2156, 6389, 1361, 3617
12381, 2375, 8094, 1705, 4287
15446, 3065, 9917, 1823, 5529
17532, 2086, 11947, 2030, 5585
19750, 2218, 13252, 1305, 6498
20547, 797, 13778, 526, 6769
22144, 1597, 15371, 1593, 6773
24832, 2688, 17549, 2178, 7283
26739, 1907, 20123, 2574, 6616
28838, 2099, 22467, 2344, 6371
30985, 2147, 24516, 2049, 6469
32327, 1342, 25152, 636, 7175
34238, 1911, 27419, 2267, 6819
36755, 2517, 29334, 1915, 7421
38968, 2213, 31578, 2244, 7390
40837, 1869, 33180, 1602, 7657
42780, 1943, 34338, 1158, 8442
44024, 1244, 35098, 760, 8926
45118, 1094, 35554, 456, 9564
46745, 1627, 36923, 1369, 9822
48521, 1776, 38643, 1720, 9878
49325, 804, 39107, 464, 10218
^C/tmp/thread.rb:23: Interrupt

|PS.
|やはり 
|
|iterator do
|  ...
|end
|
|は気分が良いですね(^^;;

石塚さんのおかげです.

|th1 = Thread.new do
|  ...
|end
|
|は構文エラーになりますが, do..endの代入は許さないということですか? 

do .. endは式でなく文というスタンスなんですけど,できた方が
便利な気もしますねえ.どうしよう.

                                まつもと ゆきひろ /:|)

In This Thread

Prev Next