Как оптимизировать скорость выполнения кода на языке Go с помощью многопоточности?

Как оптимизировать скорость выполнения кода на языке Go с помощью многопоточности?

package main

import (
    "fmt"
    "time"
)

func process(i int) {
    fmt.Println(i)
    time.Sleep(time.Second)
}

func main() {
    for i := 0; i < 10; i++ {
        go process(i)
    }
    time.Sleep(time.Second * 10)
}

В этом коде используется многопоточность для выполнения функции process в нескольких горутинах (параллельных потоках выполнения). Предполагается, что process использует большую долю процессорного времени


Ответы (1 шт):

Автор решения: Senior Pomidor

используем sync.WaitGroup

import (
    "fmt"
    "sync"
    "time"
)

func process(i int, wg *sync.WaitGroup) {
    fmt.Println(i)
    time.Sleep(time.Second)
    wg.Done()
}

func main() {
    wg := &sync.WaitGroup{}
    wg.Add(10)
    for i := 0; i < 10; i++ {
        go process(i, wg)
    }
    wg.Wait()
}
→ Ссылка