Конкурентное выполнение

Все бьюсь с конкурентностью. Подскажите пожалуйста, конкурентное ли это выолпнение? Правильно ли я понял конкурентность?

Задача, расчитать конкурентно квадраты чисел в массиве {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()
}

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