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.
- Gorutinalar —
goaç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.