Ver Fonte

Data race: deviceActivity methods with value receiver :(

Jakob Borg há 11 anos atrás
pai
commit
a918aa97d9
1 ficheiros alterados com 5 adições e 5 exclusões
  1. 5 5
      internal/model/deviceactivity.go

+ 5 - 5
internal/model/deviceactivity.go

@@ -35,7 +35,7 @@ func newDeviceActivity() *deviceActivity {
 	}
 }
 
-func (m deviceActivity) leastBusy(availability []protocol.DeviceID) protocol.DeviceID {
+func (m *deviceActivity) leastBusy(availability []protocol.DeviceID) protocol.DeviceID {
 	m.mut.Lock()
 	var low int = 2<<30 - 1
 	var selected protocol.DeviceID
@@ -49,14 +49,14 @@ func (m deviceActivity) leastBusy(availability []protocol.DeviceID) protocol.Dev
 	return selected
 }
 
-func (m deviceActivity) using(device protocol.DeviceID) {
+func (m *deviceActivity) using(device protocol.DeviceID) {
 	m.mut.Lock()
-	defer m.mut.Unlock()
 	m.act[device]++
+	m.mut.Unlock()
 }
 
-func (m deviceActivity) done(device protocol.DeviceID) {
+func (m *deviceActivity) done(device protocol.DeviceID) {
 	m.mut.Lock()
-	defer m.mut.Unlock()
 	m.act[device]--
+	m.mut.Unlock()
 }