Junior — Middle
როგორ უზრუნველყოფს Golang-ის მუშაობასა და სინქრონიზაციას შესრულების ნაკადების?
sobes.tech AI
პასუხი AI-სგან
Go ენაში სამუშაო ნაკადებთან მუშაობისთვის გამოიყენება goroutines — მსუბუქი ნაკადები, რომლებიც მართავს Go-ის runtime. Goroutines იწყება სიტყვა go-ს გამოყენებით ფუნქციის გამოძახებამდე, რაც საშუალებას აძლევს მათ ასინქრონულად შესრულებას.
Goroutines-ის სინქრონიზაციისთვის გამოიყენება არხები (channels) და sync პაკეტიდან primitives (მაგალითად, Mutex, WaitGroup). არხები უზრუნველყოფს უსაფრთხო მონაცემთა გაცვლას goroutines-ებს შორის და საშუალებას აძლევს მათ სინქრონიზაციას.
Goroutines-ის და არხების გამოყენების მაგალითი:
package main
import (
"fmt"
"time"
)
func worker(ch chan string) {
time.Sleep(time.Second)
ch <- "მზად"
}
func main() {
ch := make(chan string)
go worker(ch)
msg := <-ch
fmt.Println("Goroutine-ის სამუშაო:", msg)
}
აქ, მთავარი goroutine იწყებს worker-ს ცალკე goroutine-ში, რომელიც შემდეგ დაგვიანების შემდეგ გზავნის შეტყობინებას არხზე. მთავარი goroutine ელოდება შეტყობინების მიღებას არხიდან, რაც უზრუნველყოფს სინქრონიზაციას.