Intoroduced concurrncy in filereading

This commit is contained in:
Simon Martens
2024-11-11 22:13:47 +01:00
parent 0aec995441
commit ce7795361a
3 changed files with 31 additions and 24 deletions

View File

@@ -20,16 +20,24 @@ type XMLProvider[T KGPZXML[T]] struct {
}
func (p *XMLProvider[T]) Load() error {
// Introduce goroutine for every path, locking on append:
var wg sync.WaitGroup
for _, path := range p.paths {
var data T
if err := UnmarshalFile(path, &data); err != nil {
fmt.Println(err)
return err
}
p.mu.Lock()
p.Items = p.Items.Append(data)
p.mu.Unlock()
wg.Add(1)
go func(path string) {
defer wg.Done()
var data T
if err := UnmarshalFile(path, &data); err != nil {
fmt.Println(err)
return
}
p.mu.Lock()
defer p.mu.Unlock()
p.Items = p.Items.Append(data)
}(path)
}
wg.Wait()
return nil
}