The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
dongtingyue

golang 里 sync.Map 不能方便的修改元素某值

  •  
  •   dongtingyue · Feb 9, 2021 · 2580 views
    This topic created in 1945 days ago, the information mentioned may be changed or developed.

    有别的类型可以替代么?实现类似下面的功能

    tmp,_ := testlist.Load(2)
    tmp.(UserInfo).Name = "test55"
    
    8 replies    2021-02-09 20:45:08 +08:00
    xkeyideal
        1
    xkeyideal  
       Feb 9, 2021
    仅限于这两行代码,先想想有没有并发问题
    virusdefender
        2
    virusdefender  
       Feb 9, 2021
    给自己的 map 加个锁就行吧,你这样写可能还会有竞争
    dongtingyue
        3
    dongtingyue  
    OP
       Feb 9, 2021
    @xkeyideal sync.Map 不支持 load 后直接修改,只是示例下。
    dongtingyue
        4
    dongtingyue  
    OP
       Feb 9, 2021
    @virusdefender 还有别的方法么?相当于存用户位置,经常改变和读取全部用户位置这样。
    xkeyideal
        5
    xkeyideal  
       Feb 9, 2021
    @dongtingyue 没有什么好办法,sync.Map 的适用场景是读多写少,可以看看压测对比,性能没有优势的;你这种需求本身只能拿出来修改
    dbskcnc
        6
    dbskcnc  
       Feb 9, 2021 via Android
    a8m/syncmap 挺好用
    sdh
        7
    sdh  
       Feb 9, 2021 via Android
    存指针就好*UserInfo
    Dongxiem
        8
    Dongxiem  
       Feb 9, 2021
    如楼上所说,如果是写多的情况不应该使用 sync.map 啊,尝试使用 sync.mutex 吧!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   965 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 22:02 · PVG 06:02 · LAX 15:02 · JFK 18:02
    ♥ Do have faith in what you're doing.