У меня есть класс Swift, который использует традиционный шаблон синглтона Какао: одну статическую 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()
Если у меня есть дюжина потоков, вызывающих функции с этой константой, приостанавливает ли она все вызовы до тех пор, пока инициализатор не завершит работу, или я должен иметь некоторые средства защиты в этих функциях экземпляра для ожидания завершения инициализации?