Sobes.tech
Junior — Middle

Ako sa riadi konkurencia úloh pri použití korutín v programovacom jazyku?

sobes.tech AI

Odpoveď od AI

V Kotlinu, korutiny umožňujú spravovať konkurenčné úlohy bez blokovania vlákien pomocou ľahkých vykonávacích vlákien. Riadenie sa vykonáva cez:

  • CoroutineScope — oblasť viditeľnosti pre korutiny, ktorá kontroluje ich životný cyklus.
  • Dispatcher — určuje, na ktorom vlákne alebo pooli vlákien bude korutina spustená (napríklad Dispatchers.IO pre vstup/výstup, Dispatchers.Default pre CPU-intenzívne úlohy).
  • Job — objekt, ktorý predstavuje úlohu korutiny, s ktorým je možné ju zrušiť alebo sledovať jej stav.

Príklad spustenia viacerých konkurenčných korutín:

import kotlinx.coroutines.*

fun main() = runBlocking {
    val job1 = launch(Dispatchers.Default) {
        // Konkurenčná úloha 1
        delay(1000)
        println("Úloha 1 dokončená")
    }
    val job2 = launch(Dispatchers.IO) {
        // Konkurenčná úloha 2
        delay(500)
        println("Úloha 2 dokončená")
    }
    joinAll(job1, job2) // Čakáme na dokončenie oboch úloh
}

Týmto spôsobom korutiny umožňujú efektívne riadiť konkurenciu, prepínaním medzi úlohami bez blokovania vlákien a využívaním dispatcherov pre optimálne rozdelenie záťaže.