jarinosuke blog

最近読んだもの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種類で優先度順
    • .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 のモダンな形くらいの認識しかなかったのでありがたい