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
suspendfonksiyonundan 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,
suspendfonksiyonu 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.
launchveasyncgibikotlinx.coroutineskütüphanesinden fonksiyonlarla birlikte, asenkron kodu sıralı ve okunması kolay bir tarzda yazmaya olanak tanır. - Derleyici,
suspendfonksiyonları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.