Task.init にキャプチャされてもデータ競合起こさないと思うんですが。 final class Foo { var value: Int = 0 }
actor Bar { func useFoo(foo: sending Foo) { Task { foo.value += 1 } foo.value += 1 } } (edited)MainActor ばっか使ってるから、 actor でもできると思ってた。↓は通る。 @MainActor func useFooMain(foo: sending Foo) { Task { foo.value += 1 } foo.value += 1 }actor のメソッドでもダメなので、↓も当然ダメ。これも安全に思うけど。 func useFoo<A: Actor>(actor: isolated A, foo: sending Foo) { Task { foo.value += 1 } foo.value += 1 } (edited)