Junior — Middle
Golang tilida raqobat modelini qanday amalga oshiriladi?
sobes.tech AI
AIdan javob
Go tilida, raqobat modeliga gorutinalar va kanallar asoslangan.
-
Gorutinalar — bu yengil oqimlar bo‘lib,
gokalit so‘zi bilan boshlanadi. Ular resurslarni katta sarf qilmasdan funksiyalarni parallel bajarishga imkon beradi. -
Kanallar — bu gorutinalar o‘rtasida ma’lumot almashish uchun tiplangan kanallar bo‘lib, sinxronizatsiya va xavfsiz ma’lumot almashishni ta’minlaydi.
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)
}
}
Ushbu misolda, uchta gorutina parallel ravishda ish olib boradi va natijani kanalga yuboradi, asosiy oqim esa uni o‘qiydi.
Shu tarzda, Go raqobatli dasturlashni soddalashtiradi, oqimlar va sinxronizatsiya murakkabligini yashiradi.