@Skelman

Как параллельно выполнить несколько горутин?

Не могу добиться, чтобы такой код заработал параллельно.
Кто знает что я делаю не так?

package main

import (
	"fmt"
	"time"
)

func main() {
	t1 := time.Now()
	s1 := make(chan int)
	s2 := make(chan int)
	s3 := make(chan int)

	go summ1(s1)
	go summ2(s2)
	go summ3(s3)

	r1 := <-s1
	r2 := <-s2
	r3 := <-s3

	fmt.Println(r1)
	fmt.Println(r2)
	fmt.Println(r3)

	fmt.Println("elapsedTime:", time.Now().Sub(t1))
}

func summ1(summ chan int) {
	var sum int
	for i := 0; i < 1000000000; i++ {
		sum += i
	}
	summ <- sum
}

func summ2(summ chan int) {
	var sum int
	for i := 0; i < 1000000001; i++ {
		sum += i
	}
	summ <- sum
}

func summ3(summ chan int) {
	var sum int
	for i := 0; i < 1000000002; i++ {
		sum += i
	}
	summ <- sum
}
  • Вопрос задан
  • 237 просмотров
Пригласить эксперта
Ответы на вопрос 1
"Число работающих Машин ограничено переменной среды GOMAXPROCS или функцией runtime.GOMAXPROCS(n int). По умолчанию оно равно 1. Обычно имеет смысл сделать его равным числу ядер."
Одна машина - одна горутина.
https://habr.com/ru/post/141853/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
03 мая 2024, в 00:45
1000 руб./за проект
02 мая 2024, в 23:56
2000 руб./за проект
02 мая 2024, в 23:29
1500 руб./в час