Sobes.tech
Junior — Middle

Kako se vrši razmena podataka između komponenti ili sistema bez njihovog blokiranja i čekanja na odgovor?

sobes.tech АИ

Одговор од АИ

Razmena podataka bez blokiranja i čekanja odgovora u Go obično se realizuje pomoću kanala (channels) i gorutina. Kanali omogućavaju asinhroni prenos podataka između gorutina, a neblokirajuća razmena se postiže korišćenjem neblokirajućih operacija na kanalima, na primer, putem select sa default granom.

Primer neblokirajućeg slanja i primanja podataka putem kanala:

ch := make(chan int)

// Neblokirajuće slanje
select {
case ch <- 42:
    fmt.Println("Poslato")
default:
    fmt.Println("Kanal je zauzet, slanje preskočeno")
}

// Neblokirajuće primanje
select {
case val := <-ch:
    fmt.Println("Primljeno", val)
default:
    fmt.Println("Nema podataka za primanje")
}

Na ovaj način, komponente mogu razmenjivati podatke bez čekanja, što povećava performanse i odziv sistema.