Sobes.tech
Junior — Middle

Go dilində rəqabət, asinxronluq və paralellik necə həyata keçirilir?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində, rəqabət, asinxronluq və paralellik gorutinalar və kanallar vasitəsilə həyata keçirilir.

  • Gorutinalargo açar sözü ilə başlayan yüngül axınlardır. Onlar funksiyaları asinxron şəkildə icra etməyə və resurslar üçün rəqabət aparmağa imkan verir.
  • Kanallar — gorutinalar arasında təhlükəsiz məlumat mübadiləsi üçün istifadə olunur, sinxronizasiya və mesajların ötürülməsini təmin edir.

Paralellik, bir neçə gorutinanın eyni zamanda bir neçə prosessor nüvəsində işlədilməsi ilə əldə edilir, əgər GOMAXPROCS təyin olunubsa.

Nümunə:

package main
import (
    "fmt"
    "time"
)

func worker(id int, ch chan string) {
    time.Sleep(time.Second)
    ch <- fmt.Sprintf("İşçi %d tamamlandı", id)
}

func main() {
    ch := make(chan string)
    for i := 1; i <= 3; i++ {
        go worker(i, ch) // gorutina işə salınır
    }
    for i := 1; i <= 3; i++ {
        msg := <-ch // nəticə kanaldan alınır
        fmt.Println(msg)
    }
}

Beləliklə, Go rəqabət və paralellik ilə işləmək üçün sadə və effektiv vasitələr təqdim edir.