[ruby-list:3032] Re: thread and fork

From: jkuro@... (Jun Kuroda)
Date: 1997-05-29 03:03:19 UTC
List: ruby-list #3032
黒田です。

僕のダメダメソースは書きなおされて、結局構造体も例の eval も使
わなくなりました。

 >まつもと ゆきひろです
 >
 >良くやるのはイテレータブロック内で初出のローカル変数は共有さ
 >れないことを利用して
 >
 >  Thread.start do
 >    log = Log.new
 >    log.set構造体
 >    ...
 >  end
 >
 >ですね.ここで「うっかり」イテレータブロックの外側でlogって
 >名前の変数を使っちゃうと痛い目に遭いますが.

外側というのは
- --
def session(log)
  log.set構造体
  ...
end

thread.start{
  log = Log.new
  session(log)
}
- --

こういうのもだめなんでしょうか。

 >|について。system(とっても重いelispプログラム) を呼ぶ thread 
 >|が処理を奪ったままなので, 試しに(懲りずに)fork を狭んでみると
 >|うまく行きました。そんなもんなんでしょうか。
 >
 >systemがwaitでブロックしちゃうせいですね.ほとんどバグの領域
 >だと思います.次のリリースで修正しようと思います.

1997年05月28日(水) 午後05時14分25秒頃の, まつもと ゆきひろさんの
<199705280809.RAA07249@castanet.caelum.co.jp>の記事にお返事します.

 >ちょっと空きましたがリリースしました.
 >
 >今回の目玉
 >
 >  * systemやwaitでthreadがブロックしない

ありがとうございました。
- --
黒田  淳 (くろだ じゅん)

In This Thread