Avatar
Avatar
omochimetaru
nonisolated func は呼び出し元のisolation domainを引き継ぎ、常にisolation domainに属しているなら可能
原理的にそのように動かすことはできても、バックグラウンド処理化するという意味での並列性が消えて、呼び出し元のdomain(executor)が混線してしまいますよね。cooperativeな並行性は残せるけど。
Swiftに再突入した時点で Task に入れられないかなぁ。同期的に Task に入ることができないといけない
これってよくある、「同期のonButtonTapコールバックの中からTaskに入ってasync処理をしたい」って思うけどどうしてもできないのと同じで、絶対できない事に思います。 そうやって入った先でさらにTask.initしてisolation domainを継承したりできるためには、そのフローでsuspendしたりresumeできるということで、そのスレッドがマネージドなexecutorで実行されるコルーチンフロー(要はTask)でないといけないので、呼び出し元を抑えられてる状況からだとどうにもならない。
(edited)
これってよくある、「同期のonButtonTapコールバックの中からTaskに入ってasync処理をしたい」って思うけどどうしてもできないのと同じで、絶対できない事に思います。 そうやって入った先でさらにTask.initしてisolation domainを継承したりできるためには、そのフローでsuspendしたりresumeできるということで、そのスレッドがマネージドなexecutorで実行されるコルーチンフロー(要はTask)でないといけないので、呼び出し元を抑えられてる状況からだとどうにもならない。
最初のsuspension pointで呼び出し元に戻って、以降の処理をexecutorに入れるとかじゃダメ?