Go 语言圣经 9.2 sync.Mutex互斥锁 9.3 sync.RWMutex读写锁

9.2 sync.Mutex互斥锁

知识点

  • 1.一个只能为1和0的信号量叫做二元信号量(binary semaphore)
  • 2.这种互斥很实用,而且被sync包里的Mutex类型直接支持
  • 3.Lock和Unlock的调用是在所有路径中都严格配对的
  • 4.一个deferred Unlock即使在临界区发生panic时依然会执行
  • 5.defer调用只会比显式地调用Unlock成本高那么一点点,不过却在很大程度上保证了代码的整洁性

9.3 sync.RWMutex读写锁

  • 1.一种特殊类型的锁,其允许多个只读操作并行执行,但写操作会完全互斥
  • 2.这种锁叫作“多读单写”锁(multiple readers, single writer lock),Go语言提供的这样的锁是sync.RWMutex
  • 3.RLock只能在临界区共享变量没有任何写入操作时可用
  • 4.RWMutex只有当获得锁的大部分goroutine都是读操作,而锁在竞争条件下,也就是说,goroutine们必须等待才能获取到锁的时候,RWMutex才是最能带来好处的

代码


//等待你们的完善
——不足之处,欢迎补充——

备注

《Go 语言圣经》

  • 学习记录所使用的GO版本是1.8
  • 学习记录所使用的编译器工具为GoLand
  • 学习记录所使用的系统环境为Mac os
  • 学习者有一定的C语言基础

代码仓库

猜你喜欢

转载自blog.csdn.net/liushihua147/article/details/81163743