Sobes.tech
Middle

Kotlin'de 'suspend' fonksiyonu nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Suspend fonksiyonu, durdurulabilir (suspend) ve daha sonra devam ettirilebilir (resume) olan bir fonksiyondur. Kotlin'deki koroutinlerin temel bir parçasıdır ve bloklamadan asenkron işlemler gerçekleştirmek için kullanılır.

Ana özellikler:

  • Sadece başka bir suspend fonksiyonundan veya bir koroutine bağlamından çağrılabilir. Derleyici bu sınırlamayı sağlar.
  • İş parçacığını engellemez. Asenkron bir işlem (örneğin, ağ isteği) sırasında, suspend fonksiyonu koroutinenin yürütülmesini durdurur ve diğer görevlere thread'i serbest bırakır. Asenkron işlem tamamlandığında, koroutine durduğu yerden devam eder.
  • Yapısal paralellik için kullanılır. launch ve async gibi kotlinx.coroutines kütüphanesinden fonksiyonlarla birlikte, asenkron kodu sıralı ve okunması kolay bir tarzda yazmaya olanak tanır.
  • Derleyici, suspend fonksiyonlarını sonlu otomata dönüştürür. Bu, durdurma noktaları arasında koroutinenin durumunu korumayı sağlar.

Örnek:

import kotlinx.coroutines.*

suspend fun fetchData(): String {
    // Asenkron bir işlemin (örneğin, ağ isteği) simülasyonu
    delay(1000) // durdurma noktaları
    return "Veriler yüklendi"
}

fun main() = runBlocking {
    println("Yükleme başlıyor...")
    val data = fetchData() // suspend fonksiyon çağrısı
    println(data)
    println("Yükleme tamamlandı")
}

Burada, fetchData bir suspend fonksiyonudur ve delay (başka bir suspend fonksiyonu) kullanarak gecikmeyi simüle eder. delay, bir durdurma noktasıdır. runBlocking, main fonksiyonunu çalıştırmak için bir koroutine alanı oluşturur ve içinde fetchData asenkron olarak çalışır.