上QQ阅读APP看书,第一时间看更新
8.2 sync包
本书在5.1节已经使用过sync包,当时是使用sync.WaitGroup来统计多个goroutine执行结束的问题。
8.1节介绍了Go语言的并发模式,本节将要介绍的sync包则主要是为了满足内存共享式的并发模式。sync包提供了很多锁,这些锁主要用于解决各种并发所产生的问题。sync整个包都是以Locker接口为核心的,示例代码如下:
type Locker interface{ Lock() Unlock() }
该接口有两个方法:Lock和Unlock。并发中不同的场景所使用的方法会有所不同,sync包提供的锁也不一样。比如8.1节中的问题可以用sync.Mutex互斥锁来解决。