GC 安全的作用
当过程 p 不访问任何使用了 GC 内存的全局变量( string seq ref 或一个闭包)时 —— 无论是直接访问还是通过调用不是 GC 安全的过程进行间接访问 —— 我们就称 p 是 GC safe “GC 安全” 的。
是否 GC 安全通常可被推断出来,与异常追踪的推断类似。
gcsafe 注解可把过程标记为 GC 安全的,否则将由编译器推断是否是 GC 安全的。值得注意的是, noSideEffect 暗含着 gcsafe 。
从 C 语言库导入的例程将总是被看作 gcsafe。
{.cast(gcsafe).} 编译指示块可覆盖编译器的 GC 安全分析:
var
someGlobal: string = "some string here"
perThread {.threadvar.}: string
proc setPerThread() =
{.cast(gcsafe).}:
deepCopy(perThread, someGlobal)
参阅:
当前内容版权归 vectorworkshopbaoerjie 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 vectorworkshopbaoerjie .