Sobes.tech
Senior

Kako učiniti da izvršavanje dva worker() bude paralelno umesto sekvencijalno (6 sekundi → 3 sekunde)?

sobes.tech АИ

Одговор од АИ

У језику 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 омогућава њихово паралелно извршавање.