golang map 锁_go 安全map 实现, 互斥锁和读写锁

本文介绍了Golang中如何使用互斥锁(Mutex)和读写锁(RWMutex)来实现安全的map操作。通过示例展示了在并发环境下,Mutex保证了对map的读写互斥,而RWMutex允许多个读操作同时进行,但读写、写读仍然是互斥的。
摘要由CSDN通过智能技术生成

###互斥锁

其中Mutex为互斥锁,Lock()加锁,Unlock()解锁,使用Lock()加锁后,便不能再次对其进行加锁,直到利用Unlock()解锁对其解锁后,才能再次加锁.适用于读写不确定场景,即读写次数没有明显的区别,并且只允许只有一个读或者写的场景,所以该锁叶叫做全局锁.

package main

import (

"fmt"

"sync"

"errors"

)

type MyMap struct {

mp map[string]int

mutex *sync.Mutex

}

func (this *MyMap) Get(key string) (int, error) {

this.mutex.Lock()

i, ok := this.mp[key]

this.mutex.Unlock()

if !ok {

return i, errors.New("不存在")

}

return i, nil

}

func (this *MyMap) Set(key string, v int) {

this.mutex.Lock()

defer this.mutex.Unlock()

this.mp[key] = v

}

func (this *MyMap) Display() {

this.mutex.Lock

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值