Потокобезопасность вызовов методов для «общего» свойства статической константы - PullRequest
0 голосов
/ 15 января 2019

У меня есть класс 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()

Если у меня есть дюжина потоков, вызывающих функции с этой константой, приостанавливает ли она все вызовы до тех пор, пока инициализатор не завершит работу, или я должен иметь некоторые средства защиты в этих функциях экземпляра для ожидания завершения инициализации?

...