Avatar
omochimetaru 9/25/2024 1:09 PM
なるほど。3まではOKで、4は別に決めの問題で、旧inheritActorContextやinheritsIsolationはあくまで静的に見えるシグネチャとしての場合での引き継ぎだと捉えれば、暗黙のisolatedを引き継がないのは特に問題が無いと思います。ただまあ引き継ぐ方に直すのでもフィールとして一貫性は取れるとは思います。
おそらくactorの外から呼ばれた時は nil になる
これは関係なくないですか? この提案の元でもnonisolated funcの中でTask.initした場合、呼び出し元がnil actorの場合にはどうせ直列化できないから、いずれにしても静的には並行だとして実装する必要がある。 つまり、inheritActorContextはもともとから、「いつでも直列にできる」ものではないですよね。静的にactor isolateサれている場合だけ直列になるものだった。 それとも、いつでも直列にできるものになったらいいな、という事?
Task-isolated な場合もcontext(というかisolation domain)を引き継ぐようにして
これって、actor isolatedではない普通の状況で、Task.init したらそこから並列な実行フローが生える、という一番素朴な仕様を捨ててしまうので変だと思います。
常にいずれかのisolation domainに属することを保証して
スレッドをSwift Runtimeの外で立ち上げてそこから呼び出されてくるパターンが残るので根本的に不可能に思います。
(edited)