go 锁 速度 chan 和 mutex的比较
Posted dy blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go 锁 速度 chan 和 mutex的比较相关的知识,希望对你有一定的参考价值。
package main import ( "fmt" "sync" "time" ) func main() { start := time.Now() mu := sync.Mutex{} for i := 0; i < 1000000; { mu.Lock() i++ mu.Unlock() } fmt.Println(time.Since(start)) start = time.Now() ch := make(chan *bool, 1) for i := 0; i < 1000000; { ch <- nil i++ <-ch } fmt.Println(time.Since(start)) }
曾经听老师说过mutex是比较重量级的锁,channal是轻量级的,所以上锁时最好用channal替代mutex,但试了一下发现mutex比channal快了几倍
以上是关于go 锁 速度 chan 和 mutex的比较的主要内容,如果未能解决你的问题,请参考以下文章
Go基础系列:互斥锁Mutex和读写锁RWMutex用法详述
45. sync.Mutex 互斥和互斥锁 | 厚土Go学习笔记
vscode-go goroutine/chan/sync.waitgroup/sync.mutex/sync.rwmutex/panic/recover
vscode-go goroutine/chan/sync.waitgroup/sync.mutex/sync.rwmutex/panic/recover
vscode-go goroutine/chan/sync.waitgroup/sync.mutex/sync.rwmutex/panic/recover