Better atomic using

This commit is contained in:
wwqgtxx 2025-03-12 15:58:38 +08:00 committed by 世界
parent 22b811f938
commit 7f3343169a
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
4 changed files with 4 additions and 8 deletions

View file

@ -51,12 +51,11 @@ func (m *defaultInterfaceMonitor) checkUpdate() error {
return err return err
} }
oldInterface := m.defaultInterface.Load()
newInterface, err := m.interfaceFinder.ByIndex(link.Attrs().Index) newInterface, err := m.interfaceFinder.ByIndex(link.Attrs().Index)
if err != nil { if err != nil {
return E.Cause(err, "find updated interface: ", link.Attrs().Name) return E.Cause(err, "find updated interface: ", link.Attrs().Name)
} }
m.defaultInterface.Store(newInterface) oldInterface := m.defaultInterface.Swap(newInterface)
if oldInterface != nil && oldInterface.Equals(*newInterface) && oldVPNEnabled == m.androidVPNEnabled { if oldInterface != nil && oldInterface.Equals(*newInterface) && oldVPNEnabled == m.androidVPNEnabled {
return nil return nil
} }

View file

@ -165,12 +165,11 @@ func (m *defaultInterfaceMonitor) checkUpdate() error {
if defaultInterface == nil { if defaultInterface == nil {
return ErrNoRoute return ErrNoRoute
} }
oldInterface := m.defaultInterface.Load()
newInterface, err := m.interfaceFinder.ByIndex(defaultInterface.Index) newInterface, err := m.interfaceFinder.ByIndex(defaultInterface.Index)
if err != nil { if err != nil {
return E.Cause(err, "find updated interface: ", defaultInterface.Name) return E.Cause(err, "find updated interface: ", defaultInterface.Name)
} }
m.defaultInterface.Store(newInterface) oldInterface := m.defaultInterface.Swap(newInterface)
if oldInterface != nil && oldInterface.Equals(*newInterface) { if oldInterface != nil && oldInterface.Equals(*newInterface) {
return nil return nil
} }

View file

@ -25,12 +25,11 @@ func (m *defaultInterfaceMonitor) checkUpdate() error {
return err return err
} }
oldInterface := m.defaultInterface.Load()
newInterface, err := m.interfaceFinder.ByIndex(link.Attrs().Index) newInterface, err := m.interfaceFinder.ByIndex(link.Attrs().Index)
if err != nil { if err != nil {
return E.Cause(err, "find updated interface: ", link.Attrs().Name) return E.Cause(err, "find updated interface: ", link.Attrs().Name)
} }
m.defaultInterface.Store(newInterface) oldInterface := m.defaultInterface.Swap(newInterface)
if oldInterface != nil && oldInterface.Equals(*newInterface) { if oldInterface != nil && oldInterface.Equals(*newInterface) {
return nil return nil
} }

View file

@ -102,12 +102,11 @@ func (m *defaultInterfaceMonitor) checkUpdate() error {
return ErrNoRoute return ErrNoRoute
} }
oldInterface := m.defaultInterface.Load()
newInterface, err := m.interfaceFinder.ByIndex(index) newInterface, err := m.interfaceFinder.ByIndex(index)
if err != nil { if err != nil {
return E.Cause(err, "find updated interface: ", alias) return E.Cause(err, "find updated interface: ", alias)
} }
m.defaultInterface.Store(newInterface) oldInterface := m.defaultInterface.Swap(newInterface)
if oldInterface != nil && oldInterface.Equals(*newInterface) { if oldInterface != nil && oldInterface.Equals(*newInterface) {
return nil return nil
} }