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

From: jkuro@... (Jun Kuroda)
Date: 1997-05-27 13:16:33 UTC
List: ruby-list #3023
黒田です。

 > >まつもと ゆきひろです.
 > >
 > >一般にthreadとforkをまぜるのは良くないようです.とくに今回の
 > >ような場合,親と子で同時にthreadが動きますから,動作が予想し
 > >にくくなります.
 > >
 > >後は
 > >
 > >  forkは重い/threadは軽い
 > >  forkはメモリ空間を共有しない
 > >  forkの切替えのタイミングは不正確/threadはもっと不正確
 > >  threadではスラッシングが起きない
 > >  threadはDOSでも動く
 > >  threadがなんらかの理由でブロックすると全体が止まる
 > >
 > >などの特徴を考えてどちらかを選んでください.
 >
 >thread にします。ありがとうございました。

その後ですが、

 > >  forkはメモリ空間を共有しない

-おおざっぱに --

class Log
  #構造体定義もある
  ...
end

def session
  log = Log.new
  log.set構造体
  ...
end

thread.start{
   session()
}
- --

みたいなプログラムで、thread 間で log の構造体を共有してるよ
うなのです。こう書けば共有しないような気がしたのですが、どう
書くのが正しいのでしょう?
 それから、

 > >  forkの切替えのタイミングは不正確/threadはもっと不正確

について。system(とっても重いelispプログラム) を呼ぶ thread 
が処理を奪ったままなので, 試しに(懲りずに)fork を狭んでみると
うまく行きました。そんなもんなんでしょうか。
- --
黒田  淳 (くろだ じゅん)

In This Thread