From: masahiko yamada/Daiwasbcm Date: 2001-02-21T16:39:57+09:00 Subject: [ruby-list:28132] Re: C からのコールバックでエラー Shimomuraさん、ご指摘ありがとうございます。 > rb_funcall() を抜けてくるまでの間に、GC が動くようなタイミングが > もしあれば結局は同じことです。発生率は大幅に下がるでしょうが。 なるほど、適当に対応しててもダメですね。 > 一番いいのは、(これは、前田修吾さんのアドバイスですが)Ruby を実 > 行する専用のスレッドを用意して、Ruby に処理させたいことは全部その > スレッドを通すことですね。私は今これにチャレンジ中です。 これにしました。ライブラリが勝手に立ち上げるスレッド中では Ruby の 機能は一切呼ばず、グローバルに作った std::list にデータを積むだけに 変えました。そしてメインスレッドの適当なところで走査して rb_funcall する...(排他はアブノーマルな ^_^ Win32の Critical Section) 試してみたところうまくいったみたいです。 皆さん、本当に有り難うございました。 ------------------------------------------- 山田政彦 masahiko.yamada@daiwasbcm.co.jp