DevPrep

Все темы › Swift Concurrency (async/await, акторы)

Что такое actor и какую гонку данных он предотвращает?

Senior PRO

Суть

actor — ссылочный тип, чьё изменяемое состояние изолировано: обратиться к нему можно только изнутри актора, а снаружи — через await. Компилятор статически проверяет изоляцию, а в рантайме актор имеет serial executor — очередь job'ов, которая выполняет их по одному, не блокируя потоки: задача, ждущая актора, приостанавливается, а не висит на мьютексе. Так актор исключает data race — одновременный доступ к памяти с записью. Это не мьютекс, завёрнутый в синтаксис: мьютекс блокирует поток, актор — приостанавливает задачу.

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store