mirror of https://github.com/v2fly/v2ray-core.git
fix(router): panic caused by concurrent map read and write (#2678)
This commit is contained in:
parent
88b5b551c0
commit
87155bfc71
|
@ -4,6 +4,7 @@ import (
|
|||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type weightScaler func(value, weight float64) float64
|
||||
|
@ -26,10 +27,13 @@ type WeightManager struct {
|
|||
cache map[string]float64
|
||||
scaler weightScaler
|
||||
defaultWeight float64
|
||||
mu sync.Mutex
|
||||
}
|
||||
|
||||
// Get gets the weight of specified tag
|
||||
func (s *WeightManager) Get(tag string) float64 {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
weight, ok := s.cache[tag]
|
||||
if ok {
|
||||
return weight
|
||||
|
|
Loading…
Reference in New Issue