У меня есть параллельные горутины, которые хотят добавить структуру (указатель на) к одному и тому же фрагменту. Как написать это на Go, чтобы сделать его безопасным для параллелизма?
Это был бы мой небезопасный для параллелизма код, использующий группу ожидания:
var wg sync.WaitGroup
MySlice = make([]*MyStruct)
for _, param := range params {
wg.Add(1)
go func(param string) {
defer wg.Done()
OneOfMyStructs := getMyStruct(param)
MySlice = append(MySlice, &OneOfMyStructs)
}(param)
}
wg.Wait()
Я предполагаю, что вам нужно будет использовать каналы go для обеспечения безопасности параллелизма. Может ли кто-нибудь поделиться примером?