From: nobu.nakada@... Date: 2001-04-10T11:36:16+09:00 Subject: [ruby-dev:12836] Re: recursive malloc / fork deadlock / thread deadlock なかだです。 At Mon, 9 Apr 2001 23:50:14 +0900, matz@zetabits.com (Yukihiro Matsumoto) wrote: > | stdio の内部での排他制御を外部から見ることができれば、 > |sighandle()で rb_trap_immediate と一緒にそれも見ることで回避で > |きそうな気がします。 > > 私の考えられる回避策は > > * rb_trap_immediateを使わずIOをnon blockingモードにするこ > とで、ブロッキングを避ける > > EWOULDBLOCKに対してstdioがどう反応するかバラツキがありそ > うだなあ。 なんか結局 stdio を捨てることになりそうな…。 > * read(2)をオーバライドする。実際の呼び出しはsyscallを使う。 > > syscallのないプラットフォームではどうするか。 getc() で TRAP_BEG/TRAP_END せずに syscall の間だけ割り込みを 許可するということですか? > なかなか難しい。 * thread 関連を分割して、pthread 対応できるようにする (configure で選択)。 完全にマルチスレッドにするには書き直すところが多すぎるので、 コンテクストスイッチと排他制御だけ pthread を使ってスケジュー リングは自分でする。 というのも考えたんですが、もっと大変そう。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦