Golang中的同步工具sync.Map示例詳解
sync.Map
sync.Map是Golang標(biāo)準(zhǔn)庫提供的并發(fā)安全的Map類型,可以在多個goroutine并發(fā)讀寫Map的場景下不需要加鎖。sync.Map最典型的兩個使用場景:
- 寫少讀多的場景,特別是只寫一次,讀取多次的場景,例如緩存;
- 當(dāng)多個程序讀取、寫入和修改的場景。
sync.Map 提供如下幾個方法:
- Store(key , value any):向Map中存儲鍵值對
- Load(key any):根據(jù)鍵獲取值
- Delete(key any):刪除鍵值對
- LoadAndDelete(key any):獲取并刪除鍵值對
- LoadOrStore(key, value any) :如果key已經(jīng)存在,返回對應(yīng)值,如果不存在,存儲鍵值對
- Range(f func(key, value any) bool):遍歷Map中的鍵值對
使用方法和示例
package main import ( "fmt" "sync" ) func main() { var m sync.Map // 存儲鍵值對 m.Store("key", "value") // 根據(jù)鍵獲取值 val, ok := m.Load("key") if ok { fmt.Println(val) } // 遍歷所有鍵值對 m.Range(func(k, v interface{}) bool { fmt.Println("key:", k, ",value:", v) return true }) // 刪除鍵值對 m.Delete("key") }
小結(jié)
sync.Map是Golang中非常實用非常強大的同步工具,可用于實現(xiàn)并發(fā)安全的Map數(shù)據(jù)結(jié)構(gòu),在并發(fā)訪問的場景中可以提高程序的可靠性和性能。
到此這篇關(guān)于Golang中的同步工具sync.Map詳解的文章就介紹到這了,更多相關(guān)Golang sync.Map內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go實現(xiàn)后臺任務(wù)調(diào)度系統(tǒng)的實例代碼
平常我們在開發(fā)API的時候,前端傳遞過來的大批數(shù)據(jù)需要經(jīng)過后端處理,如果后端處理的速度快,前端響應(yīng)就快,反之則很慢,影響用戶體驗,為了解決這一問題,需要我們自己實現(xiàn)后臺任務(wù)調(diào)度系統(tǒng),本文將介紹如何用Go語言實現(xiàn)后臺任務(wù)調(diào)度系統(tǒng),需要的朋友可以參考下2023-06-06go語言執(zhí)行等待直到后臺goroutine執(zhí)行完成實例分析
這篇文章主要介紹了go語言執(zhí)行等待直到后臺goroutine執(zhí)行完成的方法,實例分析了Go語言中WaitGroup的使用技巧,需要的朋友可以參考下2015-03-03Go語言編程學(xué)習(xí)golang配置golint
這篇文章主要為大家介紹了Go語言編程學(xué)習(xí)golang配置golint的過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2021-11-11