当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Julia finalizer用法及代码示例


用法:

finalizer(f, x)

注册一个函数 f(x) 以在没有 program-accessible 引用 x 时调用,并返回 xx 的类型必须是 mutable struct ,否则此函数的行为是不可预测的。

f 不得导致任务切换,这不包括大多数 I/O 操作,例如 println 。使用 @async 宏(将上下文切换延迟到终结器之外)或 ccall 直接调用 C 中的 IO 函数可能有助于调试目的。

例子

finalizer(my_mutable_struct) do x
    @async println("Finalizing $x.")
end

finalizer(my_mutable_struct) do x
    ccall(:jl_safe_printf, Cvoid, (Cstring, Cstring), "Finalizing %s.", repr(x))
end

终结器可以在对象构造时注册。在下面的示例中,请注意我们隐式依赖终结器返回新创建的可变结构 x

示例

mutable struct MyMutableStruct
    bar
    function MyMutableStruct(bar)
        x = new(bar)
        f(t) = @async println("Finalizing $t.")
        finalizer(f, x)
    end
end

相关用法


注:本文由纯净天空筛选整理自julialang.org 大神的英文原创作品 Base.finalizer — Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。