Конкурентное выполнение
Все бьюсь с конкурентностью. Подскажите пожалуйста, конкурентное ли это выолпнение? Правильно ли я понял конкурентность?
Задача, расчитать конкурентно квадраты чисел в массиве {2,4,6,8,10}.
package main
import (
"log"
"sync"
)
type Mult struct {
sync.RWMutex
res []int
}
func NewMult() *Mult {
m := make([]int, 0)
return &Mult{
res: m,
}
}
func (m *Mult) Sqrt(val int, wg *sync.WaitGroup) {
m.Lock()
defer m.Unlock()
m.res = append(m.res, val*val)
wg.Done()
}
func CallSqrt() {
r := NewMult()
wg := sync.WaitGroup{}
vals := make([]int, 0)
vals = append(vals, 2, 4, 6, 8, 10)
lenvals := len(vals)
wg.Add(lenvals)
for i := 0; i < lenvals; i++ {
go r.Sqrt(vals[i], &wg)
}
wg.Wait()
log.Println(r.res)
}
func main() {
CallSqrt()
}