Swift Coroutine Framework: SwiftCoroutine

Güncelleme tarihi: 17 Haz 2021

Bu yazıda asenkron programlama ve coroutine'leri anlatıp, Alex Belozierov tarafından github'a yüklenen açık kaynak swift kütüphanesi SwiftCoroutine'i inceleyeceğiz.




Ön Hazırlık


Coroutine Nedir ?


Coroutine'ler, thread'lerin bloklanmadan verimli bir şekilde kullanılmasını sağlayan alt görev parçalarıdır. Ayrıca thread'lerin yeniden yapılandırılması için az maliyetli ve kontrol edilebilir yapılar sağlarlar. Coroutine'leri daha iyi anlamak için biraz senkron ve asenkron programlamadan bahsedelim.



Senkron Programlama


Programlama dilleri, senkron programlamada her satırda bulunan komutu sırayla, ek bir thread kullanmadan çalıştırır. Özetle ilk sıradaki komutun çalışması bitmeden devam eden komutlar çalışmaz. Bu durum, çalışması uzun süren komutlar nedeniyle performans sıkıntısına ve gecikmeye neden olabilir.



Asenkron Programlama ve Neden Coroutine ?


Asenkron programlamada ise bir işin bitmesi beklenmeden, bu işe bağlı olmayan diğer işler çalıştırılabilir. Bunu yapmak için de temel yaklaşımla birden çok thread kullanılabilir ancak asenkron programlamada multi thread kullanımı da zorunlu değildir.




Ancak asenkron çalışması gereken, birbirine komplex şekilde bağımlı çok fazla işiniz var ise thread'leri performanslı ve doğru şekilde kullanmak ve yönetmek giderek zorlaşır.


İşte bu noktada coroutine'ler yardıma koşar:


  • Coroutine'ler thread tarafından yürütülen alt görevleri temsil ederler. Thread'lerin bloklanmadan askıya alınmasını sağlarlar.

  • Context switch