Skip to content

Commit a736b95

Browse files
authored
Merge pull request #577 from stzn/kakuri
分離→隔離
2 parents ed70a72 + 0a4d667 commit a736b95

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

language-guide/concurrency.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ let result = await handle.value
300300

301301
## アクター\(Actors\)
302302

303-
タスクは、プログラムを分離された並行処理の断片に分割するために使用できます。タスクは互いに分離されているので並行に実行しても安全ですが、タスク間で何らかの情報を共有したい場合もあります。アクター\(_actors_\)を使用すると、並行処理をするコード間で安全に情報を共有することができます。
303+
タスクは、プログラムを隔離された並行処理の断片に分割するために使用できます。タスクは互いに隔離されているので並行に実行しても安全ですが、タスク間で何らかの情報を共有したい場合もあります。アクター\(_actors_\)を使用すると、並行処理をするコード間で安全に情報を共有することができます。
304304

305305
クラスのようにアクターは参照型なので、[Classes Are Reference Types\(クラスは参照型\)](../language-guide/structures-and-classes.md#classes-are-reference-types)の中の値型と参照型の比較はアクターにも当てはまります。しかし、クラスとは異なり、アクターの可変状態\(_mutable state_\)にアクセスできるのは一度に 1 つのタスクだけです。これにより、複数のタスクが、同じアクターのインスタンスとやり取りする必要があるコードでも、安全にアクセスできるようになります。例えば、下記は気温を記録するアクターです:
306306

@@ -357,7 +357,7 @@ extension TemperatureLogger {
357357
print(logger.max) // エラー
358358
```
359359

360-
アクターのプロパティはそのアクターの独立したローカル状態の一部のため、`await` を書かないと `logger.max` へのアクセスは失敗します。このプロパティにアクセスするコードは、アクタの一部として実行する必要があり、これは非同期操作であり、`await` を記述する必要があります。Swift は、実行されているコードのみがアクターに分離されたローカルの状態にアクセスできることを保証します。この保証はアクター分離\(_actor isolation_\)と呼ばれています。
360+
アクターのプロパティはそのアクターの独立したローカル状態の一部のため、`await` を書かないと `logger.max` へのアクセスは失敗します。このプロパティにアクセスするコードは、アクタの一部として実行する必要があり、これは非同期操作であり、`await` を記述する必要があります。Swift は、実行されているコードのみがアクターに隔離されたローカルの状態にアクセスできることを保証します。この保証はアクター隔離\(_actor isolation_\)と呼ばれています。
361361

362362
Swift の並行処理モデルの以下の側面は、共有された可変状態について推論しやすくするために一緒に機能します:
363363

language-reference/declarations.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -976,9 +976,9 @@ actor <#actor name#>: <#adopted protocols#> {
976976
* [Initializers\(イニシャライザ\)](../language-guide/initialization.md#initializersイニシャライザ)で説明されているように、アクター内で宣言されたイニシャライザの 1 つを呼び出します
977977
* イニシャライザが宣言されておらず、アクター宣言の全てのプロパティに初期値が指定されている場合は、[Default Initializers\(デフォルトイニシャライザ\)](../language-guide/initialization.md#default-initializers)で説明されているように、アクターのデフォルトイニシャライザを呼び出します
978978

979-
デフォルトでは、アクターのメンバはそのアクターに分離\(_isolated_\)されています。メソッドの本文やプロパティの get などのコードは、そのアクター内で実行されます。アクター内のコードは、そのコードが既に同じアクターで実行されることがわかっているため、同期的にやり取りできますが、アクター外のコードは、このコードが別のアクターで非同期に実行されているコードだということを示すために、`await` をマークする必要があります。KeyPath は、アクターの isolated メンバを参照することはできません。アクターの isolated 格納プロパティは、同期関数に in-out パラメータとして渡すことができますが、非同期関数には渡すことができません。
979+
デフォルトでは、アクターのメンバはそのアクターに隔離\(_isolated_\)されています。メソッドの本文やプロパティの get などのコードは、そのアクター内で実行されます。アクター内のコードは、そのコードが既に同じアクターで実行されることがわかっているため、同期的にやり取りできますが、アクター外のコードは、このコードが別のアクターで非同期に実行されているコードだということを示すために、`await` をマークする必要があります。KeyPath は、アクターの isolated メンバを参照することはできません。アクターの isolated 格納プロパティは、同期関数に in-out パラメータとして渡すことができますが、非同期関数には渡すことができません。
980980

981-
アクターは、宣言が `nonisolated` キーワードでマークされている非分離\(_nonisolated_\) メンバを持つこともできます。nonisolated メンバは、アクターの外部のコードのように実行されます。アクターの isolated な状態と同期的にやり取りすることはできませんが、呼び出し元は、使用時に `await` マークを付けません。
981+
アクターは、宣言が `nonisolated` キーワードでマークされている非隔離\(_nonisolated_\) メンバを持つこともできます。nonisolated メンバは、アクターの外部のコードのように実行されます。アクターの isolated な状態と同期的にやり取りすることはできませんが、呼び出し元は、使用時に `await` マークを付けません。
982982

983983
アクターのメンバは、nonisolated または非同期の場合にのみ `@objc` 属性でマークできます。
984984

0 commit comments

Comments
 (0)