Actor'ы в Swift

Начиная с версии Swift 5.5 появился новый ссылочный тип (reference type) - акторы. В данной статье будет рассказано, для чего их добавили и какую роль они выполняют.

1010

С точки зрения алгоритмов и структур данных, блокировка get() и add() в этом примере несимметрична. Предполагая, что book - стандартная хеш-таблица, вызовы add() блокируют друг друга и get(). А вот get() друг друга не блокируют, потокобезопасно читать можно сколько угодно. Интересно, учитывает ли этот факт реализация Actor, и учитывает ли программист на Swift, если ему достаточно только применить Actor.

Вся проблема в том, что нету гарантий того, что не будет производится одновременно чтение и запись. И в таком случае чтение не может быть безопасным, если по этому же самому ключу в таблице будет происходить запись новых данных.