Skip to main content

GC_register_finalizer_unreachable

Function GC_register_finalizer_unreachable 

Source
pub unsafe extern "C" fn GC_register_finalizer_unreachable(
    arg1: *mut c_void,
    arg2: GC_finalization_proc,
    arg3: *mut c_void,
    arg4: *mut GC_finalization_proc,
    arg5: *mut *mut c_void,
)
Expand description

This is a special finalizer that is useful when an object’s finalizer must be run when the object is known to be no longer reachable, not even from other finalizable objects. It behaves like “normal” finalization, except that the finalizer is not run while the object is reachable from other objects specifying unordered finalization. Effectively it allows an object referenced, possibly indirectly, from an unordered finalizable object to override the unordered finalization request. This can be used in combination with GC_register_finalizer_no_order so as to release resources that must not be released while an object can still be brought back to life by other finalizers. Only works if GC_java_finalization is set. Probably only of interest when implementing a language that requires unordered finalization (e.g. Java, C#).