Sobes.tech
Junior — Middle

Koje su glavne konstrukcije koje se koriste za upravljanje i izvršavanje gorutina u programskom jeziku?

sobes.tech АИ

Одговор од АИ

Za upravljanje i izvršavanje gorutina u Go jeziku koriste se sledeće osnovne konstrukcije:

  • Pokretanje gorutine: ključna reč go pre poziva funkcije pokreće je u posebnoj gorutini, na primer:

    go mojaFunkcija()
    

    Ovo omogućava asinhrono izvršavanje funkcije.

  • Kanali (channels): koriste se za sinhronizaciju i razmenu podataka između gorutina. Kanal se kreira ovako:

    ch := make(chan int)
    

    Slanje i primanje podataka:

    ch <- 42      // slanje
    val := <-ch   // primanje
    

    Kanali obezbeđuju sigurnu komunikaciju i blokiraju gorutinu ako podaci nisu spremni.

  • sync.WaitGroup: koristi se za čekanje završetka grupe gorutina. Primer:

    var wg sync.WaitGroup
    wg.Add(1)
    go func() {
        defer wg.Done()
        // rad gorutine
    }()
    wg.Wait() // čekanje da sve gorutine završe
    
  • select: omogućava da se istovremeno čekaju više operacija na kanalima, birajući onu koja je spremna. Primer:

    select {
    case msg := <-ch1:
        fmt.Println("Primljeno sa ch1:", msg)
    case ch2 <- 42:
        fmt.Println("Poslato na ch2")
    default:
        fmt.Println("Nijedna operacija nije spremna")
    }
    

Ove konstrukcije omogućavaju efikasno pokretanje, sinhronizaciju i upravljanje paralelnim izvršenjem u Go jeziku.