Avatar
f() async してもデッドロックしてるっぽいんですよね
3:05 PM
いや、viewDidLoadでasyncに包んでるのがマズイっぽいな
3:09 PM
トップを_runAsyncMainして、 func f() async にするとデッドロックしなくなった。これでniwさんの環境を再現できた気がする
3:14 PM
fにasyncを付けるとmainの await a.f() 以下と fの async { .. } ブロックの中が同じスレッドで実行されるようになるっぽい…
🤔 1
3:16 PM
@swift-main import Foundation actor A { var c = 0 func inc() -> Int { c += 1 return c } func f() async { async { print("begin f") print(Thread.current) print(inc()) print("end f") } } } _runAsyncMain { print(Thread.current) let a = A() await a.f() print("begin main") print(Thread.current) print(await a.c) print("end main") }