インスタンスメソッド


assumeIsolated(_:file:line:)


現在のタスクがこのアクターの連続的実行者上で実行中であると想定し、そうでない場合はプログラムの実行を停止します。


iOS 13.0+ iPadOS 13.0+ Mac Catalyst 13.0+ macOS 10.15+

tvOS 13.0+ visionOS 1.0+ watchOS 6.0+

nonisolated
func assumeIsolated<T>(
    _ operation: (isolated Self) throws -> T,
    file: StaticString = #fileID,
    line: UInt = #line
) rethrows -> T where T : Sendable




パラメータ


operation

現在のコンテキストがアクターの連続的実行者上で実行されている場合に実行される操作。


file

assertion が失敗した場合に出力するファイル名。デフォルトは、このメソッドが呼び出された場所です。


line

assertion が失敗した場合に出力する行番号。デフォルトは、このメソッドが呼び出された場所です。



戻り値


operation の戻り値



議論


このメソッドを呼び出すことで、現在実行中の同期関数が実際にこのアクターの連続的実行者上で実行されていると 想定し、検証する ことができます。


その場合、操作はアクターの isolated (分離された) バージョンで呼び出され、非同期境界を経由することなく、アクターのローカル状態への同期アクセスが可能になります。


現在のコンテキストがアクターの連続的実行者上で実行されていない場合、またはアクターがリモートアクターへの参照である場合、このメソッドは致命的なエラーでクラッシュします (preconditionIsolated() と同様に)。


このチェックは渡されたアクターの連続的実行者に対して実行されることに注意してください。つまり、別のアクターが同じ連続的実行者を使用する場合 (そのアクターの unownedExecutor を自身の unownedExecutor として使用することにより)、同時実行の安全性の観点から連続的実行者はこれら 2 つのアクターの相互排他を保証するため、このチェックは成功します。


このメソッドは同期関数からのみ使用できます。非同期関数は代わりにアクターに通常のメソッド呼び出しを実行し、必要に応じてタスク実行をターゲットアクターからホップする (飛び越す) 必要があります。


注意

このチェックは、アクターの連続的実行者に対して実行されます。つまり、別のアクターが同じ連続的実行者を使用する場合 (そのアクターの連続的実行者を自身の unownedExecutor として使用することにより)、同時実行の安全性の観点から連続的実行者はこれら 2 つのアクターの相互排他を保証するため、このチェックは成功します。














トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ