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