Avatar
Avatar
koher
これってよくある、「同期のonButtonTapコールバックの中からTaskに入ってasync処理をしたい」って思うけどどうしてもできないのと同じで、絶対できない事に思います。 そうやって入った先でさらにTask.initしてisolation domainを継承したりできるためには、そのフローでsuspendしたりresumeできるということで、そのスレッドがマネージドなexecutorで実行されるコルーチンフロー(要はTask)でないといけないので、呼び出し元を抑えられてる状況からだとどうにもならない。
最初のsuspension pointで呼び出し元に戻って、以降の処理をexecutorに入れるとかじゃダメ?
omochimetaru 9/25/2024 2:12 PM
昔のRunLoop自力回しとか EventLoopFuture の wait みたいなアプローチってことですね。 元の同期関数からするとありえないぐらい長時間戻らない関数みたいに振る舞ったり、 さらにそこから外界に出てもう一度戻って来るようなコールバックを考えたときにデッドロックする可能性がでてきたりするので、実用性は厳しいと思います (edited)