TGViewer
SwiftyGroup SwiftyGroup @swiftynew · 2.35K subscribers
Post #707 1.78K
Interview: чем опасна actor reentrancy в Swift Concurrency?

Сильный ответ: actor защищает mutable state от одновременного доступа, но после await другой вызов может зайти в тот же actor и изменить состояние.


Вопрос на собеседовании обычно звучит просто: “Actor делает код thread-safe?” Ожидаемый ответ: да, но не магически для всей бизнес-логики. Actor serializes access к своему isolated state, однако Swift actors are reentrant: на suspension point actor может выполнить другую работу.

Мини-ловушка:

actor Counter {
private var value = 0

func incrementSlowly() async {
let oldValue = value
await Task.yield()
value = oldValue + 1
}
}


Если два клиента одновременно вызовут incrementSlowly(), оба могут прочитать 0 до await, а затем оба записать 1. Actor не нарушен, data race нет, но логическая инварианта потеряна.

Как отвечать сильнее: не держите важный read-modify-write через await. Сначала дождитесь внешней async-работы, потом зайдите в actor и обновите state; либо перечитайте state после suspension; либо разделите метод так, чтобы инвариант обновлялся без suspension point.

Источник: The Swift Programming Language / Concurrency

#Swift #Concurrency #Interview #Actors #iOS
  • 👎 7
  • 🫡 2
  • 👍 1
More from @swiftynew
  1. Oct 1, 2026SwiftUI .task: как не словить гонку при загрузке данных .task(id:) хорош для экрана, где з…
  2. Sep 29, 2026⚡️⚡️AI-агент съел токены и потерял контекст. Что делать? Разберемся на Mobius 2026 Autumn.…
  3. Sep 22, 2026Всем привет😎. Уже прилетел отказ от Apple: «Приложение падает при запуске». Начал проверя…
  4. Sep 17, 2026Доигрались, вайбкодеры? Apple из-за вас меняет файл проекта .pbxproj ➡️ .xcproj 📁 Раньше…
  5. Sep 16, 2026iPhone Duo Design Guidelines Подъехали подробные гайдлайны по тому, как надо адаптировать…
  6. Sep 12, 2026Xcode 27 RC уже вышел, и приложения, собранные в нём, уже можно отправлять на проверку в A…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →