最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go使用sync.Map來解決map的并發(fā)操作問題

 更新時(shí)間:2021年10月31日 10:27:52   作者:新亮筆記  
在 Golang 中 map 不是并發(fā)安全的,sync.Map 的引入確實(shí)解決了 map 的并發(fā)安全問題,本文就詳細(xì)的介紹一下如何使用,感興趣的可以了解一下

前言

在 Golang 中 map 不是并發(fā)安全的,自 1.9 才引入了 sync.Map ,sync.Map 的引入確實(shí)解決了 map 的并發(fā)安全問題,不過 sync.Map 卻沒有實(shí)現(xiàn) len() 函數(shù),如果想要計(jì)算 sync.Map 的長度,稍微有點(diǎn)麻煩,需要使用 Range 函數(shù)。

map 并發(fā)操作出現(xiàn)問題

func main() {
 demo := make(map[int]int)

 go func() {
  for j := 0; j < 1000; j++ {
   demo[j] = j
  }
 }()

 go func() {
  for j := 0; j < 1000; j++ {
   fmt.Println(demo[j])
  }
 }()

 time.Sleep(time.Second * 1)
}

執(zhí)行輸出:

fatal error: concurrent map read and map write

sync.Map 解決并發(fā)操作問題

func main() {
 demo := sync.Map{}

 go func() {
  for j := 0; j < 1000; j++ {
   demo.Store(j, j)
  }
 }()

 go func() {
  for j := 0; j < 1000; j++ {
   fmt.Println(demo.Load(j))
  }
 }()

 time.Sleep(time.Second * 1)
}

執(zhí)行輸出:
<nil> false
1 true

...

999 true

計(jì)算 map 長度

func main() {
 demo := make(map[int]int)

 for j := 0; j < 1000; j++ {
  demo[j] = j
 }

 fmt.Println("len of demo:", len(demo))
}

執(zhí)行輸出:
len of demo: 1000

計(jì)算 sync.Map 長度

func main() {
 demo := sync.Map{}
 
 for j := 0; j < 1000; j++ {
  demo.Store(j, j)
 }

 lens := 0
 demo.Range(func(key, value interface{}) bool {
  lens++
  return true
 })

 fmt.Println("len of demo:", lens)
}

執(zhí)行輸出:
len of demo: 1000

小結(jié)

  • Load 加載 key 數(shù)據(jù)
  • Store 更新或新增 key 數(shù)據(jù)
  • Delete 刪除 key 數(shù)據(jù)
  • Range 遍歷數(shù)據(jù)
  • LoadOrStore 如果存在 key 數(shù)據(jù)則返回,反之則設(shè)置
  • LoadAndDelete 如果存在 key 數(shù)據(jù)則刪除

到此這篇關(guān)于Go使用sync.Map來解決map的并發(fā)操作問題的文章就介紹到這了,更多相關(guān)Go sync.Map解決map并發(fā)操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Go語言實(shí)現(xiàn)壓縮文件處理

    基于Go語言實(shí)現(xiàn)壓縮文件處理

    在現(xiàn)代的應(yīng)用開發(fā)中,處理壓縮文件(如 .zip 格式)是常見的需求,本文將介紹如何使用 Go 語言封裝一個(gè) ziputil 包,來處理文件的壓縮和解壓操作,需要的可以了解下
    2024-11-11
  • Go語言實(shí)現(xiàn)順序存儲(chǔ)的線性表實(shí)例

    Go語言實(shí)現(xiàn)順序存儲(chǔ)的線性表實(shí)例

    這篇文章主要介紹了Go語言實(shí)現(xiàn)順序存儲(chǔ)的線性表的方法,實(shí)例分析了Go語言實(shí)現(xiàn)線性表的定義、插入、刪除元素等的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • go?micro微服務(wù)框架項(xiàng)目搭建方法

    go?micro微服務(wù)框架項(xiàng)目搭建方法

    這篇文章主要為大家介紹了go?micro微服務(wù)框架項(xiàng)目搭建方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • go select編譯期的優(yōu)化處理邏輯使用場(chǎng)景分析

    go select編譯期的優(yōu)化處理邏輯使用場(chǎng)景分析

    select 是 Go 中的一個(gè)控制結(jié)構(gòu),類似于用于通信的 switch 語句。每個(gè) case 必須是一個(gè)通信操作,要么是發(fā)送要么是接收。接下來通過本文給大家介紹go select編譯期的優(yōu)化處理邏輯使用場(chǎng)景分析,感興趣的朋友一起看看吧
    2021-06-06
  • Go設(shè)計(jì)模式之觀察者模式講解和代碼示例

    Go設(shè)計(jì)模式之觀察者模式講解和代碼示例

    觀察者是一種行為設(shè)計(jì)模式, 允許一個(gè)對(duì)象將其狀態(tài)的改變通知其他對(duì)象,觀察者模式提供了一種作用于任何實(shí)現(xiàn)了訂閱者接口的對(duì)象的機(jī)制, 可對(duì)其事件進(jìn)行訂閱和取消訂閱,本文就通過代碼示例給大家詳細(xì)介紹一下Go的觀察者模式,需要的朋友可以參考下
    2023-07-07
  • Golang 正則匹配效率詳解

    Golang 正則匹配效率詳解

    這篇文章主要介紹了Golang 正則匹配效率詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • golang字符串拼接實(shí)現(xiàn)方式和區(qū)別對(duì)比

    golang字符串拼接實(shí)現(xiàn)方式和區(qū)別對(duì)比

    本文介紹了Go語言中字符串拼接的多種方法及其優(yōu)缺點(diǎn),推薦使用strings.Builder進(jìn)行頻繁拼接以優(yōu)化內(nèi)存分配和性能,同時(shí),還討論了通過sync.Pool優(yōu)化高頻創(chuàng)建的對(duì)象,以減少垃圾回收壓力,感興趣的朋友一起看看吧
    2025-02-02
  • Golang如何快速刪除map所有元素

    Golang如何快速刪除map所有元素

    這篇文章主要介紹了Golang如何快速刪除map所有元素問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • golang實(shí)現(xiàn)ping命令的完整代碼

    golang實(shí)現(xiàn)ping命令的完整代碼

    這篇文章給大家介紹了如何使用golang實(shí)現(xiàn)ping命令,文中給大家介紹了完整的實(shí)現(xiàn)代碼,并有詳細(xì)的圖文講解,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Golang實(shí)現(xiàn)超時(shí)退出的三種方式

    Golang實(shí)現(xiàn)超時(shí)退出的三種方式

    這篇文章主要介紹了Golang三種方式實(shí)現(xiàn)超時(shí)退出,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論

南雄市| 特克斯县| 枝江市| 大名县| 察雅县| 西藏| 临朐县| 黔西县| 萨嘎县| 日照市| 响水县| 石狮市| 山东省| 都匀市| 涞水县| 蕉岭县| 汤阴县| 兰考县| 天柱县| 朝阳区| 惠水县| 土默特左旗| 蛟河市| 梧州市| 汝南县| 商城县| 承德县| 金湖县| 阳山县| 盱眙县| 鹰潭市| 永善县| 抚顺市| 铁力市| 吉首市| 大田县| 电白县| 红安县| 丹巴县| 玛多县| 台东市|