首页
注册
登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请
登录
V2EX
›
lucarfulllll
›
全部回复第 1 页 / 共 1 页
回复总数
1
2023-02-27 11:46:49 +08:00
回复了
Wangds
创建的主题
›
Go 编程语言
›
发现一个 golang 结构体字段被异常修改的问题,大家帮我看看
看了下例子,有点不懂的地方想问下楼主和留言的大神。
sync.map{} 按照官方的描述就是并发安全的,而且内部实现也是加了 Mutex 锁,为啥请求中还加了读写锁呢?麻烦指教
var rwLock sync.RWMutex
// mode=2
var List2 sync.Map
.....
// GetTaskByIDModel 查询 task
func GetTaskByIDModel(id int64) (Task, error) {
var task Task
var ok bool
rwLock.RLock()
defer rwLock.RUnlock(). // 此处还加读写锁是否多余呢?
if mode == 1 {
task, ok = List[id]
} else if mode == 2 {
v, o := List2.Load(id)
if o {
task, ok = v.(Task)
if !ok {
return Task{}, errors.New("not found")
}
} else {
log.Println("从 sync.Map 中获取 task 失败")
}
}
if !ok {
return Task{}, errors.New("not found")
}
return task, nil
}
关于
·
帮助文档
·
博客
·
API
·
FAQ
·
实用小工具
·
1044 人在线
最高记录 6679
·
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 9ms ·
UTC 23:15
·
PVG 07:15
·
LAX 15:15
·
JFK 18:15
Developed with
CodeLauncher
♥ Do have faith in what you're doing.