Sobes.tech
Junior — Middle

Објасните концепт конкуренције у програмском језику Go и његову улогу у развоју паралелних апликација

sobes.tech АИ

Одговор од АИ

U jeziku Go, konkurencija (concurrency) je sposobnost programa da izvršava više zadataka istovremeno, efikasno koristeći resurse procesora. U jeziku Go, to se postiže pomoću gorutina, koje su lake niti pokrenute ključnom reči go.

Konkurencija omogućava pisanje paralelnih aplikacija, gde se različiti delovi koda izvršavaju istovremeno, što povećava performanse i odzivnost programa.

Za sinhronizaciju i razmenu podataka između gorutina koriste se kanali (channels), koji obezbeđuju sigurnu komunikaciju bez eksplicitnih blokada.

Primer:

package main
import (
    "fmt"
    "time"
)

func worker(id int) {
    fmt.Printf("Radnik %d počinje\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Radnik %d završava\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go worker(i) // pokretanje gorutine
    }
    time.Sleep(2 * time.Second) // čekanje na završetak gorutina
}

Ovaj primer prikazuje tri gorutina koje rade istovremeno, demonstrirajući konkurenciju u Go-u.