golang 什么时候用锁_后端开发

Go语言包中的 sync 包供应了两种锁范例:sync.Mutex 和 sync.RWMutex。 (引荐进修:go)

Mutex 是最简朴的一种锁范例,同时也比较暴力,当一个 goroutine 获得了 Mutex 后,其他 goroutine 就只能乖乖比及这个 goroutine 开释该 Mutex。

RWMutex 相对友好些,是典范的单写多读模子。在读锁占用的情况下,会阻挠写,但不阻挠读,也就是多个 goroutine 可同时猎取读锁(挪用 RLock() 要领;

而写锁(挪用 Lock() 要领)会阻挠任何其他 goroutine(不管读和写)进来,全部锁相当于由该 goroutine 独有。从 RWMutex 的完成看,RWMutex 范例实在组合了 Mutex:

type RWMutex struct {
    w Mutex
    writerSem uint32
    readerSem uint32
    readerCount int32
    readerWait int32
}

sync.mutex 加锁后制止其他处所读或写,这个适用于大概涌现的在差别go协程中修正同一个数据

sync.rwmutex 的lock 和 unlock 的运用和sync.mutex相似

sync.rwmutex 的rlock和runlock的运用适用于要读取数据,防备在读取的同时大概涌现的别的处所写入,而致使的读取失利

以上就是golang 什么时候用锁的细致内容,更多请关注ki4网别的相干文章!

Leave A Comment