File tree Expand file tree Collapse file tree 2 files changed +4
-4
lines changed
Expand file tree Collapse file tree 2 files changed +4
-4
lines changed Original file line number Diff line number Diff 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 {
357357print (logger.max ) // エラー
358358```
359359
360- アクターのプロパティはそのアクターの独立したローカル状態の一部のため、` await ` を書かないと ` logger.max ` へのアクセスは失敗します。このプロパティにアクセスするコードは、アクタの一部として実行する必要があり、これは非同期操作であり、` await ` を記述する必要があります。Swift は、実行されているコードのみがアクターに分離されたローカルの状態にアクセスできることを保証します。この保証はアクター分離 \( _ actor isolation_ \) と呼ばれています。
360+ アクターのプロパティはそのアクターの独立したローカル状態の一部のため、` await ` を書かないと ` logger.max ` へのアクセスは失敗します。このプロパティにアクセスするコードは、アクタの一部として実行する必要があり、これは非同期操作であり、` await ` を記述する必要があります。Swift は、実行されているコードのみがアクターに隔離されたローカルの状態にアクセスできることを保証します。この保証はアクター隔離 \( _ actor isolation_ \) と呼ばれています。
361361
362362Swift の並行処理モデルの以下の側面は、共有された可変状態について推論しやすくするために一緒に機能します:
363363
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments