Этот вопрос проверяет понимание акторов в Swift и их механизма изоляции для безопасного доступа к состоянию.
Actor — это тип, который обеспечивает безопасный доступ к своему состоянию в многопоточной среде через изоляцию. Все доступы к его свойствам и методам автоматически синхронизируются, предотвращая data races. Изоляция достигается через serial queue и awaits для асинхронного доступа.
Actors являются ключевой feature Swift concurrency для thread safety.
1. Что такое actor:
Reference type с изолированным состоянием.
Гарантирует, что только одна задача может access its state at a time.
2. Как работает изоляция:
Все методы и properties изолированы по умолчанию.
Доступ извне requires await даже для чтения.
Внутри actor код выполняется последовательно.
Пример:
actor Counter {
private var value = 0
func increment() {
value += 1
}
func getValue() -> Int {
return value
}
}
// Использование
let counter = Counter()
Task {
await counter.increment()
let value = await counter.getValue()
}