有没有什么线程安全的办法?
题目来源:字节跳动
答案:
在Go 语言中,线程安全一般指协程安全,因为 Go 一般使用协程进行调度;而 Go 中为了保证其协程安全,有以下几种机制:
1、互斥锁:在 Go 的标准库中有 sync 包,sync.Mutex 就是解决并发冲突导致的安全性问题的一种方式。
2、读写锁:是在互斥锁上的进一步升级版本,主要为了解决并发多写少读、少写多读两种高并发的情况
3、如果不是需要强制使用同一个对象,那么也可以采用创建对象副本的方式,每个协程独占一个对象,相互之间不关联,但是这显然不符合我们的要求。
综上,使用互斥锁或者读写锁就能很好的解决问题。