您的位置:宽带测速网 > 编程知识 > Go中如何遍历并发访问安全的数据结构

Go中如何遍历并发访问安全的数据结构

2025-06-23 19:37来源:互联网 [ ]

在Go中,可以使用通道(channel)来实现并发访问安全的数据结构。通过在数据结构上使用互斥锁(mutex)或读写锁(RWMutex),可以确保在并发访问时数据结构的一致性。以下是一个使用互斥锁来实现安全并发访问的示例:

package mainimport ("sync")type SafeMap struct {musync.Mutexitems 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 finishselect {}}

在这个示例中,我们定义了一个SafeMap类型,该类型包含一个互斥锁和一个字符串键值对的map。通过在Set和Get方法中使用互斥锁,我们确保在并发访问时数据结构的一致性。在main函数中,我们启动两个goroutine来并发地设置和获取数据,并通过互斥锁保证安全性。

GO