On 07/07/2009 8:36 PM, Henrik Bengtsson wrote:
Is it possible to (i) clear or (ii) override already registered
finalizer functions, e.g. reg.finalizer(e, f, add=FALSE) cf.
on.exit(..., add=FALSE)?

No, but you can have the finalizer function call something else, and change the thing it calls. E.g.

reg.finalizer(env, function (...) CleanUp(...))

will call CleanUp in the global environment (the environment of the anonymous finalizer); change that function and the cleanup behaviour will change.

Duncan Murdoch


Currently:

env <- new.env()
reg.finalizer(env, function(...) cat("Finalizer A!\n"))
NULL
reg.finalizer(env, function(...) cat("Finalizer B!\n"))
NULL
reg.finalizer(env, function(...) cat("Finalizer C!\n"))
NULL
gc()
         used (Mb) gc trigger (Mb) max used (Mb)
Ncells 115827  3.1     350000  9.4   350000  9.4
Vcells  77109  0.6     786432  6.0   370917  2.9
rm(env)
gc()
Finalizer C!
Finalizer B!
Finalizer A!
         used (Mb) gc trigger (Mb) max used (Mb)
Ncells 115932  3.1     350000  9.4   350000  9.4
Vcells  77648  0.6     786432  6.0   370917  2.9

I wish to have only finalizer "C" to run.

/Henrik

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to