Swift の Task.yield()
は、非同期タスクから実行を一時停止して、他のタスクが実行されるようにするために利用するAPIです。よきタイミングでスレッドを譲ることで、CPU負荷の高い処理を効率的に実行することができたりします。
この Task.yield()
はある状態が担保されているかを待つなどの while ループ でも使うことができます。
// isFoo = false になるまで Task.yield() し続ける while isFoo { await Task.yield() }
非同期処理の中の while ループで Task.yield()
を使うことで、後続処理に進むのにある状態を担保しつつ不必要な sleep をしなくて済むということができるという学びでした。