美文网首页
golang 并发写map修复

golang 并发写map修复

作者: yandaxin | 来源:发表于2023-10-27 23:20 被阅读0次

    fatal error: concurrent map writes:当其中有两个goroutine 尝试同时写入相同的key 值时,就会引发 concurrent map writes 错误,为了解决该问题,可以使用Go 中的并发安全的结构体 sync.Map,或者使用互斥锁sync.Mutex以及concurrentmap 来保护map 的并发访问

    https://blog.csdn.net/EDI451553616/article/details/130400507

    teamValidMap := new(sync.Map)
        // 获取有效的队伍
        var wg sync.WaitGroup
        for _, teamItem := range teamList {
            wg.Add(1)
    
            tid := teamItem.TeamId
            teamTmp := teamItem
            go func(tid int64) {
                isV := IsTeamValid(ctx, teamTmp)
                teamValidMap.Store(tid, isV)
                defer wg.Done()
            }(tid)
        }
        wg.Wait()
    
        // 如果有多个队伍 选最后发起的有效的那个
        var team *InvitationTeam
        for _, teamItem := range teamList {
            isV, _ := teamValidMap.Load(teamItem.TeamId)
            if !isV.(bool) {
                continue
            }
    
            if nil == team {
                team = teamItem
                continue
            }
    
            if teamItem.InitiateTime.Unix() > team.InitiateTime.Unix() {
                team = teamItem
            }
        }
    
    

    相关文章

      网友评论

          本文标题:golang 并发写map修复

          本文链接:https://www.haomeiwen.com/subject/ezppidtx.html