go - 如何在 golang 中进行线程安全的预检查
问题描述
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
}
以上是我在golang中的方法A(),我想如果是并发场景,可能会导致竞态,如何避免呢?感谢你
解决方案
推荐阅读
- python - 使用 Python SDK 将 CSV 文件上传到 Azure Data Lake Store(ADLS) Gen 2
- java - 在应用程序被终止/未主动运行时进行 API 调用
- c - 我正在制作一个 C 程序,它只接受 C 中 1 和 8 之间的输入。我究竟做错了什么?
- php - 更改子节点 SimpleXMLElement 的命名空间
- firebase - 如何使用 Firestore 对 3 种实体类型的关系进行建模?
- android - 如何在颤振插件中执行计算密集型任务?
- javascript - 如何在 chart.js 2.9.3 中使用主要刻度线?
- javascript - 验证后的注销组件未呈现为 true 这与 react-router 文档中的代码相似
- java - Kafka 生产者无法发送带有 NOT_LEADER_FOR_PARTITION 异常的消息
- apache-kafka - 在 Kafka 2.3 中使用 kafka-configs.sh 超时