如何在golang进行线程安全预检查
上面是我在golang中的方法A(),我想如果这是一个并发场景,可能会导致竞争条件,如何避免它?谢谢你在第一行添加互斥锁,然后再添加延迟解锁?你在找什么?如何在golang进行线程安全预检查,go,Go,上面是我在golang中的方法A(),我想如果这是一个并发场景,可能会导致竞争条件,如何避免它?谢谢你在第一行添加互斥锁,然后再添加延迟解锁?你在找什么? type ServiceDM struct { ServiceData *XXType } func (dm *ServiceDM) A() (*XXType, error) { if dm.ServiceData != nil { return ServiceDM.ServiceData, nil }
type ServiceDM struct {
ServiceData *XXType
}
func (dm *ServiceDM) A() (*XXType, error) {
if dm.ServiceData != nil {
return ServiceDM.ServiceData, nil
}
// call some other services to get serviceData
// do some logic
ServiceDM.ServiceData = response.ServiceData
return ServiceDM.ServiceData, nil
}