From 8f15d4898eac5fe9137ef7e5bfbc9a9241fee5c4 Mon Sep 17 00:00:00 2001 From: Miguel Mota Date: Wed, 9 May 2018 15:12:55 -0700 Subject: [PATCH] mutex lock on map write --- pkg/api/impl/coinmarketcap/coinmarketcap.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/api/impl/coinmarketcap/coinmarketcap.go b/pkg/api/impl/coinmarketcap/coinmarketcap.go index e8f6f5a..1f342b4 100644 --- a/pkg/api/impl/coinmarketcap/coinmarketcap.go +++ b/pkg/api/impl/coinmarketcap/coinmarketcap.go @@ -12,7 +12,6 @@ import ( // Service service type Service struct { - lock sync.RWMutex } // New new service @@ -88,19 +87,20 @@ func (s *Service) GetAllCoinData(convert string) (map[string]apitypes.Coin, erro func (s *Service) GetAllCoinDataV2(convert string) (map[string]apitypes.Coin, error) { var wg sync.WaitGroup ret := make(map[string]apitypes.Coin) + var mutex sync.Mutex for i := 0; i < 5; i++ { wg.Add(1) go func(j int) { - s.lock.RLock() - defer s.lock.RUnlock() defer wg.Done() coins, err := getLimitedCoinData(convert, j) if err != nil { return } + mutex.Lock() for k, v := range coins { ret[k] = v } + mutex.Unlock() }(i) } wg.Wait()