isolation domainによるデータ隔離
Swift Concurrencyではアクターモデルをさらに拡張して、状態とその状態を扱うプログラムを隔離するisolation domain(隔離領域)を定義しています。 あるisolation domainに属する可変状態は、同じ隔離領域にいるコードからのみ同期的にアクセスされます。
別のisolation domainにいるプログラムは、その状態を自由に読み書きできません。isolation domainの境界(isolation boundaryと一般的に呼ばれる)を越えてデータをやり取りする場合は、awaitを使います。この越え方は、isolation domainを超えたデータのやり取りで扱います。
全ての状態や関数は以下の三種類のisolation domainのいずれかに属します。
- non-isolated:隔離されていない状態や関数。
- actor の値への隔離:特定の
actorに隔離されている状態や関数。 - global actor への隔離。
MainActorのような global actor に隔離されている状態や関数。
次のページから、この三つを順に見ていきます。