Я использую 4 процедуры go, чтобы назначить различные переменные-члены экземпляра структуры.Каждая переменная-член доступна только для одной процедуры go.
Нужно ли добавлять мьютекс при доступе к экземпляру структуры?
Я не уверен, что подпрограммы 4 go обращаются к одной и той же памяти.Я чувствую, что должен быть, потому что все они обращаются к владельцу.
Этот код демонстрирует, что я делаю.
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
var res Response
var mu sync.Mutex
wg.Add(1)
go func() {
defer wg.Done()
mu.Lock()
defer mu.Unlock()
res.A = []string{"a"}
}()
wg.Add(1)
go func() {
defer wg.Done()
mu.Lock()
defer mu.Unlock()
res.B = "b"
}()
wg.Add(1)
go func() {
defer wg.Done()
mu.Lock()
defer mu.Unlock()
res.C = 100
}()
wg.Add(1)
go func() {
defer wg.Done()
mu.Lock()
defer mu.Unlock()
res.D = map[string]string{
"d": "dd",
}
}()
wg.Wait()
fmt.Println(res)
}
type Response struct {
A []string
B string
C int
D map[string]string
}