« [Ruby] Thread#initialize の再定義(その3) | トップページ | [Ruby] Win32OLE と Thread »

2010年1月23日 (土)

[Ruby] Thread#initialize の再定義(その4)

class Thread
  alias :org_initialize :initialize
  def initialize(*arg, &block)
    org_initialize(*arg) {
       puts "OleInitialize"
       begin
         block.call(*arg)
       ensure
         puts "OleUnitialize"
       end
    }
  end
end

で大体良さそうな感じだけど、これを C レベルで実装するのってどうすればいい?

とりあえず、C レベルで WIN32OLE.ole_initialize と WIN32OLE.ole_uninitialize を用意しておいて

Ruby レベルで

class Thread
  alias :org_initialize :initialize
  def initialize(*arg, &block)
    org_initialize(*arg) {
       WIN32OLE.ole_initialize
       begin
         block.call(*arg)
       ensure
         WIN32OLE.ole_uninitialize
       end
    }
  end
end

として試してみてから、Cの実装は(やるかどうかも含めて)考えよう。

|

« [Ruby] Thread#initialize の再定義(その3) | トップページ | [Ruby] Win32OLE と Thread »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [Ruby] Thread#initialize の再定義(その4):

« [Ruby] Thread#initialize の再定義(その3) | トップページ | [Ruby] Win32OLE と Thread »