最近読んだもの13 - Swift Concurrencyなど
- How Does Swift Concurrency Prevents Thread Explosions?
- 最近読んだもの8 - Swift Concurrency、 Swifty CLI などでも挙げた Swift Concurrency における thread explosion についての詳細
- Thread Explosion とは CPU core 数に対して16倍以上のスレッドが走っている状態
- GCD 自体は Thread explosion を抑制する機能はないので簡単に引き起こすことができる
- Swift Concurrency で Task.init(priority:operation:) で同様のことをする
- priority は
.userInitiated
.utility
.background
の3種類で優先度順
- priority は
.userInitiated
だと CPU コア数分の thread を作成している、それぞれ“com.apple.root.user-initiated-qos.cooperative“
という queue に対して上限 thread 数を設けている.utility
.background
は.userInitiated
の Task が実行されている場合は1つまでしか thread が実行されないなど色々なテストがされていた
- Five ways to break Swift Concurrency
@MainActor
が backgroud thread など他の thread から呼ばれる可能性があるコードのまとめ- selector や notification 経由など
- SwiftUI だと DateFormatter がなくても Text のみで日付のフォーマットを変えられるという tweet
- Swift 5.8 から closure 内で weakify した self を unwrap したら、その後は暗黙的に扱えるようになったという tweet
- Task Groups in Swift explained with code examples
- Task Group のユースケースごとの紹介
- DispatchGroup のモダンな形くらいの認識しかなかったのでありがたい
-
- UIViewConroller.viewIfLoaded というメソッド iOS9 からあるよという tweet