Sobes.tech
Senior

Как да направите изпълнението на двата worker() паралелно вместо последователно (6 секунди → 3 секунди)?

sobes.tech AI

Отговор от AI

В Go за паралелното изпълнение на функции могат да се използват горутините. Ако имате две функции worker(), които в момента се изпълняват последователно и общо отнемат 6 секунди, като ги стартирате в отделни горутини, те ще се изпълняват паралелно, а общото време ще се намали приблизително до 3 секунди.

Пример:

func() {
    worker()
}()
func() {
    worker()
}()

// За да изчакате завършването и на двете горутини, използвайте sync.WaitGroup
var wg sync.WaitGroup
wg.Add(2)
func() {
    defer wg.Done()
    worker()
}()
func() {
    defer wg.Done()
    worker()
}()
wg.Wait()

По този начин стартирането на функции в горутини и синхронизирането им чрез WaitGroup позволява тяхното паралелно изпълнение.