Sobes.tech
Middle

Kotlin-də 'suspend' funksiyası nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Suspend funksiyası — bu, to‘xtatiladigan (suspend) va keyinchalik davom ettiriladigan (resume) bo‘ladigan funksiyadir. Ular Kotlindagi korutinlarning asosiy qismidir va asinxron operatsiyalarni bloklamasdan bajarish uchun ishlatiladi.

Asosiy xususiyatlar:

  • Faqat boshqa suspend funksiyasidan yoki korutina kontekstidan chaqirilishi mumkin. Kompilyator bu cheklovni ta'minlaydi.
  • Threadni bloklamaydi. Asinxron operatsiya (masalan, tarmoq so‘rovi) bajarilayotganda, suspend funksiyasi korutinaning bajarilishini to‘xtatadi, va threadni boshqa vazifalar uchun bo‘shatadi. Asinxron operatsiya tugagach, korutina o‘z joyidan davom etadi.
  • Strukturaviy parallelizm uchun ishlatiladi. launch va async kabi funksiyalar bilan birga, asinxron kodni ketma-ket va oson o‘qiladigan tarzda yozishga imkon beradi.
  • Kompilyator suspend funksiyalarini oxirgi avtomatlarga aylantiradi. Bu korutinaning holatini to‘xtash nuqtalari o‘rtasida saqlash imkonini beradi.

Misol:

import kotlinx.coroutines.*

suspend fun fetchData(): String {
    // Asinxron operatsiyaning imitatsiyasi (masalan, tarmoq so‘rovi)
    delay(1000) // to‘xtash nuqtalari
    return "Ma'lumotlar yuklandi"
}

fun main() = runBlocking {
    println("Yuklashni boshlayapmiz...")
    val data = fetchData() // suspend funksiyasini chaqirish
    println(data)
    println("Yuklash tugadi")
}

Bu yerda, fetchDatasuspend funksiyasi bo‘lib, delay (yana bir suspend funksiyasi) yordamida kechikishni imitasiya qiladi. delay — to‘xtash nuqtasi. runBlocking esa, mainni bajarish uchun korutin doirasini yaratadi va ichida fetchData asinxron tarzda bajariladi.