中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

Go中如何遍歷并發訪問安全的數據結構

go
小億
85
2024-04-03 09:57:58
欄目: 編程語言

在Go中,可以使用通道(channel)來實現并發訪問安全的數據結構。通過在數據結構上使用互斥鎖(mutex)或讀寫鎖(RWMutex),可以確保在并發訪問時數據結構的一致性。以下是一個使用互斥鎖來實現安全并發訪問的示例:

package main

import (
    "sync"
)

type SafeMap struct {
    mu    sync.Mutex
    items map[string]string
}

func NewSafeMap() *SafeMap {
    return &SafeMap{
        items: make(map[string]string),
    }
}

func (sm *SafeMap) Set(key, value string) {
    sm.mu.Lock()
    defer sm.mu.Unlock()
    sm.items[key] = value
}

func (sm *SafeMap) Get(key string) (string, bool) {
    sm.mu.Lock()
    defer sm.mu.Unlock()
    value, ok := sm.items[key]
    return value, ok
}

func main() {
    sm := NewSafeMap()

    go func() {
        sm.Set("key1", "value1")
    }()

    go func() {
        value, ok := sm.Get("key1")
        if ok {
            println(value)
        }
    }()

    // Wait for goroutines to finish
    select {}
}

在這個示例中,我們定義了一個SafeMap類型,該類型包含一個互斥鎖和一個字符串鍵值對的map。通過在Set和Get方法中使用互斥鎖,我們確保在并發訪問時數據結構的一致性。在main函數中,我們啟動兩個goroutine來并發地設置和獲取數據,并通過互斥鎖保證安全性。

0
武城县| 健康| 银川市| 金门县| 广平县| 星座| 留坝县| 隆回县| 同江市| 清苑县| 德庆县| 平定县| 潮安县| 镇巴县| 定襄县| 孝昌县| 浏阳市| 海原县| 遂宁市| 宣武区| 嘉定区| 乌兰察布市| 昭苏县| 界首市| 平原县| 修水县| 化州市| 隆回县| 洪江市| 天柱县| 日照市| 肇源县| 东辽县| 灵丘县| 镇康县| 郁南县| 高唐县| 马公市| 阳原县| 称多县| 梓潼县|