Junior — Middle
Go tilida parallel va raqobat qanday amalga oshiriladi?
sobes.tech AI
AIdan javob
Go tilida parallelizm va raqobat goroutine va kanallar orqali amalga oshiriladi.
-
Goroutine lar — bu yengil oqimlar bo‘lib, ular
gokalit so‘zi bilan boshlanadi. Ular funksiyalarni asinxron va parallel ravishda bajarishga imkon beradi. -
Kanallar — bu goroutine lar o‘rtasida muloqot va ma’lumotlarni sinxronlashtirish uchun xizmat qiladi. Ular xavfsiz tarzda qiymatlarni goroutine lar o‘rtasida uzatishga imkon beradi, bu esa ma’lumotlar urushini oldini oladi.
Misol:
package main
import (
"fmt"
"time"
)
func worker(id int, ch chan string) {
time.Sleep(time.Second)
ch <- fmt.Sprintf("Ishchi %d tugadi", id)
}
func main() {
ch := make(chan string)
for i := 1; i <= 3; i++ {
go worker(i, ch)
}
for i := 1; i <= 3; i++ {
msg := <-ch
fmt.Println(msg)
}
}
Shu tarzda, Go oddiy va samarali vositalarni taqdim etadi, murakkab oqimlarni boshqarishsiz raqobatli dasturlar yozish imkonini beradi.