From: "U.Nakamura" Date: 2013-01-21T15:39:40+09:00 Subject: [ruby-dev:46882] Re: [ruby-changes:26796] nobu:r38848 (trunk): win32ole.rb: use TracePoint こんにちは、なかむら(う)です。 In message "[ruby-dev:46880] Re: [ruby-changes:26796] nobu:r38848 (trunk): win32ole.rb: use TracePoint" on Jan.20,2013 01:33:40, wrote: > Win32(Win64含む)の場合は、Ruby本体でThreadを作ったら > CoInitializeEx(NULL)を常に呼べば良いと思うんですが。 WIN32OLEがrequireされてなくても、という意味でしょうか? > 逆に絶対にOLE2の初期化をしてはならない状況というのがいまひとつ考えにくい > です(極度にプロセスメモリを削減したい場合とか?)。 しなくていいときにしなくていいことをするな、という教訓がある 以外は特に理由は無いですね。 とはいえ、WIN32OLEは仮にそれで助けたとしても、次はあのライブ ラリでも必要だった、その次はこのライブラリでも必要だった、と かいう話になっても困るので、WIN32OLE専用の変更でruby本体をい じるくらいなら、もうちょっと汎用的な、つまり他のライブラリで も使用可能な枠組みを考えた方がいいと思われます。 というわけで、 (A) 前述の通り、スレッド起動時、終了時に呼ばれるフックを導 入するAPIが必要なんでなかろうか? →それはそうかもしれず。でも2.0.0には間に合わないよね。 (B) trace系APIで(A)に相当することができるよね? →じゃあとりあえずそうしておこう。(イマココ) でもこの使い方はあんまり褒められたものじゃないよう にも思うので、next minorで(A)について議論すべきかな。 (C) そもそもThread#initializeを再定義したときの問題は何も解 決してないよ? →今回明らかになった事例以外にこの問題を踏んだという 報告はないので、2.0.0が出てから考えよう。 というのが現時点の状態だと思っています。 それでは。 -- U.Nakamura