Senior
როგორ გავხადოთ ორი worker()-ის შესრულება პარალელურად, ნაცვლად სერიული (6 წამი → 3 წამი)?
sobes.tech AI
პასუხი AI-სგან
Go ენაში ფუნქციების პარალელურად შესრულება შესაძლებელია goroutine-ების გამოყენებით. თუ გაქვთ ორი worker() ფუნქცია, რომლებიც ამჟამად სემანტიკურად იშლება და ჯამში 6 წამს გრძელდება, მათი გაშვება ცალკეულ goroutine-ებში, ისინი შესრულდება პარალელურად, და საერთო დრო დაახლოებით 3 წამი იქნება.
მაგალითი:
func() {
worker()
}()
func() {
worker()
}()
// ორივე goroutine-ის დასრულების დასაცავად გამოიყენეთ sync.WaitGroup
var wg sync.WaitGroup
wg.Add(2)
func() {
defer wg.Done()
worker()
}()
func() {
defer wg.Done()
worker()
}()
wg.Wait()
ამ გზით, ფუნქციების გაშვება goroutine-ებში და მათი სინქრონიზაცია WaitGroup-ის საშუალებით უზრუნველყოფს მათ პარალელურად შესრულებას.