Junior — Middle
როგორ ხორციელდება კონკურენცია, ასინქრონულობა და პარალელიზმი Go ენისთვის?
sobes.tech AI
პასუხი AI-სგან
გო ენაში კონკურენცია, ასინქრონულობა და პარალელიზმი განსახორციელებულია გორუტინებისა და არხების საშუალებით.
- გორუტინები — ეს მსუბუქი ნაკადებია, რომლებიც იწყება საკვანძო სიტყვა
go-ს გამოყენებით. მათ შეუძლიათ ფუნქციების ასინქრონულად შესრულება და რესურსებისთვის ბრძოლა. - არხები — გამოიყენება გორუტინებს შორის უსაფრთხო მონაცემთა გაცვლისთვის, სინქრონიზაციისა და შეტყობინებების გადაცემის უზრუნველსაყოფად.
პარალელიზმი მიღწეულია რამდენიმე გორუტინის გაშვებით, რომლებიც ერთდროულად შეიძლება მუშაობდნენ რამდენიმე პროცესორის ბირთვზე, თუ არის მითითებული GOMAXPROCS.
მაგალითი:
package main
import (
"fmt"
"time"
)
func worker(id int, ch chan string) {
time.Sleep(time.Second)
ch <- fmt.Sprintf("მუშაკი %d დასრულდა", 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)
}
}
ამ გზით, Go უზრუნველყოფს მარტივ და ეფექტურ საშუალებებს კონკურენციისა და პარალელიზმის სამუშაოდ.