go的map怎么去做并发安全?

提问者:帅平 问题分类:面试刷题
go的map怎么去做并发安全?
1 个回答
你我这辈子最的依靠
你我这辈子最的依靠
1、可以使用互斥锁(sync.Mutex)。在访问map之前加锁,访问完成之后解锁,保证同一时间只有一个协程能够访问map。例如可以定义一个包含map和互斥锁的结构体,在对map进行读写操作的方法中先获取锁,操作完成后释放锁。
2、使用读写锁(sync.RWMutex)。如果对map的读操作远多于写操作,可以使用读写锁。多个协程可以同时读取map(加读锁),但写操作(加写锁)是互斥的,这样能提高并发性能。
3、使用Go 1.9引入的sync.Map。它是专门为并发场景设计的map类型,内部有复杂机制保证在多个协程读写时的安全性,其操作方法(如Store、Load、Delete等)可以在多个协程中安全地调用,不需要额外的锁操作。
发布于:4个月前 (01-02) IP属地:
我来回答