Swift 如何实现惰性静态变量分配/求值的线程安全?所有调用都经过的所有静态变量访问是否有一些全局锁?
swift_once
进行初始化。
swift_once
@convention(thin) (Builtin.RawPointer, @convention(thin) () -> ()) -> ()
用于延迟初始化全局变量。第一个参数必须 指向一个字大小的内存位置,该位置在以下位置初始化为零 进程开始。引用内存是未定义的行为 已初始化为非零或写入 当前进程生命周期中除
之外的任何内容。 第二个参数引用的函数将被运行 在进程启动和函数之间的时间内恰好一次 返回。swift_once
dispatch_once_f
的包装。据我所知,dispatch_once_f
不使用“全局锁”。两个全局变量的初始化可以同时发生。