我有一个Swift类,它使用传统的Cocoa单例模式:一个静态shared
常数和一个私有init
,该共享常数只被调用一次。就像这样:
public class Foo {
public static let shared = Foo()
private init() { /* ... */ }
public func bar() { /* ... */ }
public func baz() { /* ... */ }
}
// Meanwhile, in multiple places upon multiple threads:
Foo.shared.bar()
Foo.shared.baz()
如果我有十二个线程在该常量上调用函数,它是否会暂停所有调用,直到该初始化程序完成,还是应该在这些实例函数中设置一些保护措施以等待初始化完成?