Sobes.tech
Junior — Middle

Magyarázza el a konkurencia fogalmát a Go programozási nyelvben és szerepét párhuzamos alkalmazások fejlesztésében

sobes.tech MI

Válasz az MI-től

A Go nyelvben a konkurencia (concurrency) az a képesség, hogy egy program több feladatot hajtson végre egyidejűleg, hatékonyan kihasználva a processzor erőforrásait. A Go nyelvben ezt goroutine-okon keresztül valósítják meg, amelyek könnyű szálak, és a go kulcsszóval indítják őket.

A konkurencia lehetővé teszi párhuzamos alkalmazások írását, ahol a kód különböző részei egyidejűleg futnak, ez növeli a teljesítményt és a programok reakcióképességét.

A goroutine-ok közötti szinkronizációhoz és adatcseréhez csatornákat (channels) használnak, amelyek biztonságos kommunikációt biztosítanak explicit blokkolások nélkül.

Példa:

package main
import (
    "fmt"
    "time"
)

func worker(id int) {
    fmt.Printf("Munkás %d kezdődik\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Munkás %d kész\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go worker(i) // goroutine indítása
    }
    time.Sleep(2 * time.Second) // várakozás a goroutine-ok befejezésére
}

Ebben a példában három goroutine fut egyidejűleg, bemutatva a konkurenciát a Go nyelvben.