Sobes.tech
Senior

Ako spraviť, aby vykonávanie dvoch worker() bolo paralelné namiesto sekvenčného (6 sekúnd → 3 sekundy)?

sobes.tech AI

Odpoveď od AI

V jazyku Go môžete použiť gorutiny na paralelné vykonávanie funkcií. Ak máte dve funkcie worker(), ktoré sa momentálne vykonávajú sekvenčne a celkovo trvajú 6 sekúnd, ich spustením v samostatných gorutinách sa budú vykonávať paralelne a celkový čas sa približne zníži na 3 sekundy.

Príklad:

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

// Aby ste počkali na dokončenie oboch gorutín, použite sync.WaitGroup
var wg sync.WaitGroup
wg.Add(2)
func() {
    defer wg.Done()
    worker()
}()
func() {
    defer wg.Done()
    worker()
}()
wg.Wait()

Týmto spôsobom spustenia funkcií v gorutinách a synchronizácie cez WaitGroup umožňuje ich paralelné vykonávanie.