Как оптимизировать скорость выполнения кода на языке 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()
}