Sobes.tech
Junior — Middle

Proqramlaşdırma dilində korutinalardan istifadə edərkən rəqabət tapşırıqları necə idarə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Kotlin-də, korutinlər, yüngül icra axınlarını istifadə edərək, ipləri bloklamadan, eyni vaxtda olan tapşırıqları idarə etməyə imkan verir. İdarəetmə aşağıdakı şəkildə həyata keçirilir:

  • CoroutineScope — korutinlər üçün görünürlük sahəsi, onların həyat dövrünü idarə edir.
  • Dispatcher — korutinanın hansı ip və ya ip hovuzunda icra olunacağını müəyyən edir (məsələn, Dispatchers.IO giriş-çıxış üçün, Dispatchers.Default CPU intensiv tapşırıqlar üçün).
  • Job — korutina tapşırığını təmsil edən obyekt, onun ləğv olunması və ya vəziyyətinin izlənməsi üçün istifadə olunur.

Bir neçə eyni vaxtda işləyən korutinlərin başlanması nümunəsi:

import kotlinx.coroutines.*

fun main() = runBlocking {
    val job1 = launch(Dispatchers.Default) {
        // Rəqabət tapşırığı 1
        delay(1000)
        println("Tapşırıq 1 tamamlandı")
    }
    val job2 = launch(Dispatchers.IO) {
        // Rəqabət tapşırığı 2
        delay(500)
        println("Tapşırıq 2 tamamlandı")
    }
    joinAll(job1, job2) // Hər iki tapşırığın tamamlanmasını gözləyirik
}

Bu şəkildə, korutinlər, tapşırıqlar arasında keçid edərək, ipləri bloklamadan və yükü optimal şəkildə bölüşdürmək üçün dispatcher-lərdən istifadə etməklə, səmərəli şəkildə çoxluq idarə edə bilir.