ごとけんです
FOOのオブジェクトがGCされるときに必ず FOO#bye が呼ばれるように
するにはどうすれば良いでしょうか??
たとえば以下はあってます?? 気になるのは、self がGCされる寸前で
@x は参照可能かという点です。
class FOO
require "final"
def initialize(filename)
@x = filename
ObjectSpace.define_finalizer(self, lambda{bye})
end
def bye
raise "gone" unless @x
open(@x, "a+"){|f| f << $$ << ": bye\n"}
@x = nil
end
end
# スレッドのスレッドに絡みたいけど時間がない…
-- gotoken