Coroutine’ler (eşyordamlar)
Kısaca: Coroutine’ler, ortada durdurulabilen ve daha sonra aynı yerden sürdürülebilen işlevlerdir.
Biraz daha ayrıntılı: İş parçacıklarından farklı olarak geçişi işletim sistemi değil, kod isteyerek denetimi bırakarak yapar (işbirlikçi çoklu görev). Bu yüzden çok hafiftirler: bir iş parçacığında on binlercesi çalışır.
Ayrıntılı
- Anahtar sözcükler:
yield(Python üreteçleri),await(async/await),suspend(Kotlin), goroutine’ler (Go, çalışma zamanı tarafından zamanlanır). - Güç: Boşta duran iş parçacıkları birikmeden ağ veya veritabanı üzerinde çok bekleme.
- Zayıflık: Beklemek yerine hesaplayan bir coroutine, aynı iş parçacığındaki tüm diğerlerini engeller. CPU yoğun iş süreçlere veya iş parçacıklarına aittir.
- Akış: Bir olay döngüsü (event loop) coroutine’leri başlatır, durumlarını hatırlar ve sonuçları hazır olunca sürdürür.
- Kaputun altında: Derleyici bunları genellikle bir durum makinesine dönüştürür.
Ayrıca bak: async/await