こんにちは、なかむら(う)です。

In message "[ruby-dev:46880] Re: [ruby-changes:26796] nobu:r38848 (trunk): win32ole.rb: use TracePoint"
    on Jan.20,2013 01:33:40, <artonx / yahoo.co.jp> 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 <usa / garbagecollect.jp>