CodeBlanks Logo Icon CodeBlanks

Coroutine overhead

Coroutine ve thread maliyetini öğrenirsin.

Coroutine overhead nedir?

Coroutine, Kotlin'de askıya alınabilen (suspendable) hafif görevdir. Thread'e göre çok ucuzdur; binlercesi aynı anda çalışabilir.

Yine de coroutine'in maliyeti sıfır değildir: her biri bir Job ve state nesnesi taşır. Dispatchers.Default CPU işleri, Dispatchers.IO dosya/ağ işleri içindir. Yanlış seçim (ağır CPU'yu IO'ya koymak) verimsiz olur. runBlocking bridge olarak kullanılır. Bu dersteki coroInfo modeli konsepti gösterir.

Dispatcher seçimi

Dispatcher, coroutine'in hangi thread havuzunda çalışacağını belirler. Yanlış seçim performansı düşürür.

Dispatchers.Default CPU bağımlı işler içindir (sayısal hesap). Dispatchers.IO dosya ve ağ G/Ç içindir. Dispatchers.Main UI thread'indedir. CPU işini IO'ya koymak havuzu doyurur; G/Ç'yi Default'a koymak thread'leri bloke eder. Doğru eşleştirme, hem throughput hem gecikme için kritiktir.

Uygulama coroInfo yaz

fun coroInfo(): String tanımla. "coroutine" döndürsün. main içinde println(coroInfo()) yaz.

Başlangıç kodu

Main.kt
// coroInfo fonksiyonunu ekle

fun main() {
    // coroutine bilgisini yazdır
}

Örnek çözüm

Main.kt
fun coroInfo(): String = "coroutine"
fun main() {
    println(coroInfo())
}

Beklenen çıktı

coroutine

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 runBlocking gövdesini tamamla

Soru
runBlocking { launch { ____ } }
Cevap
runBlocking { launch { delay(100) } }

Açıklama: delay(100) coroutine'i askıya alır; Thread.sleep değil.

2 Coroutine, thread'e göre neyi azaltır?

Main.kt
A coroutine lowers thread cost.
  • Disk gecikmesini
  • CPU önbellek isabetini
  • Thread oluşturma maliyetini Doğru cevap
  • Bellek bant genişliğini

Açıklama: Coroutine thread oluşturma maliyetini büyük ölçüde düşürür.

3 Coroutine parçalarını eşle

Kavram Anlamı
coroutine Hafif görev
Dispatchers.Default CPU bağımlı iş
Dispatchers.IO G/Ç işleri
runBlocking Bridge

Uzman bölümündeki tüm dersler