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