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 позволява тяхното паралелно изпълнение.