chore: using xsync.MapOf replace sync.Map
This commit is contained in:
@ -73,12 +73,9 @@ func handleUDPToLocal(writeBack C.WriteBack, pc N.EnhancePacketConn, key string,
|
||||
}
|
||||
|
||||
func closeAllLocalCoon(lAddr string) {
|
||||
natTable.RangeLocalConn(lAddr, func(key, value any) bool {
|
||||
conn, ok := value.(*net.UDPConn)
|
||||
if !ok || conn == nil {
|
||||
log.Debugln("Value %#v unknown value when closing TProxy local conn...", conn)
|
||||
return true
|
||||
}
|
||||
natTable.RangeForLocalConn(lAddr, func(key string, value *net.UDPConn) bool {
|
||||
conn := value
|
||||
|
||||
conn.Close()
|
||||
log.Debugln("Closing TProxy local conn... lAddr=%s rAddr=%s", lAddr, key)
|
||||
return true
|
||||
|
@ -2,11 +2,11 @@ package statistic
|
||||
|
||||
import (
|
||||
"os"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/Dreamacro/clash/common/atomic"
|
||||
|
||||
"github.com/puzpuzpuz/xsync/v2"
|
||||
"github.com/shirou/gopsutil/v3/process"
|
||||
)
|
||||
|
||||
@ -14,6 +14,7 @@ var DefaultManager *Manager
|
||||
|
||||
func init() {
|
||||
DefaultManager = &Manager{
|
||||
connections: xsync.NewMapOf[Tracker](),
|
||||
uploadTemp: atomic.NewInt64(0),
|
||||
downloadTemp: atomic.NewInt64(0),
|
||||
uploadBlip: atomic.NewInt64(0),
|
||||
@ -27,7 +28,7 @@ func init() {
|
||||
}
|
||||
|
||||
type Manager struct {
|
||||
connections sync.Map
|
||||
connections *xsync.MapOf[string, Tracker]
|
||||
uploadTemp *atomic.Int64
|
||||
downloadTemp *atomic.Int64
|
||||
uploadBlip *atomic.Int64
|
||||
@ -48,14 +49,14 @@ func (m *Manager) Leave(c Tracker) {
|
||||
|
||||
func (m *Manager) Get(id string) (c Tracker) {
|
||||
if value, ok := m.connections.Load(id); ok {
|
||||
c = value.(Tracker)
|
||||
c = value
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (m *Manager) Range(f func(c Tracker) bool) {
|
||||
m.connections.Range(func(key, value any) bool {
|
||||
return f(value.(Tracker))
|
||||
m.connections.Range(func(key string, value Tracker) bool {
|
||||
return f(value)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -318,8 +318,7 @@ func handleUDPConn(packet C.PacketAdapter) {
|
||||
return
|
||||
}
|
||||
|
||||
lockKey := key + "-lock"
|
||||
cond, loaded := natTable.GetOrCreateLock(lockKey)
|
||||
cond, loaded := natTable.GetOrCreateLock(key)
|
||||
|
||||
go func() {
|
||||
defer packet.Drop()
|
||||
@ -333,7 +332,7 @@ func handleUDPConn(packet C.PacketAdapter) {
|
||||
}
|
||||
|
||||
defer func() {
|
||||
natTable.Delete(lockKey)
|
||||
natTable.DeleteLock(key)
|
||||
cond.Broadcast()
|
||||
}()
|
||||
|
||||
|
Reference in New Issue
Block a user