tg-me.com/iosdev/1132
Last Update:
Понятие Изоляции в Swift: определение и виды
Изоляцию можно назвать механизмом, который Swift использует для того, чтобы сделать гонки данных невозможными.
С помощью этого механизма компилятор понимает, как осуществляется доступ к данным и когда можно и нельзя делать это гарантированно безопасным способом.
Стоит также отметить, что речь идет именно о небезопасном доступе к изменяемому состоянию, но не обо всех видах гонок в целом.
Изоляция при этом может быть одной из следующих:
1️⃣ Статической.
2️⃣ Динамической.
3️⃣ Отсутствующей (или, если сказать по другому, без неё). По умолчанию как раз все не изолировано, и нам нужно предпринять явные действия, чтобы это изменить.
Типы акторов, глобальные акторы и изолированные параметры — все это формы статической изоляции.
Может случиться так, что система типов не описывает или не может описать фактически используемую изоляцию. Это регулярно случается с системами, реализованными до появления параллелизма.
Один из инструментов, который решает эту проблему — динамическая изоляция.
Это API, которые позволяют нам выразить изоляцию таким образом, что она не видна при простом просмотре определений.