Go 并发-进阶讨论
上一章介绍了 goroutines——Go 中最重要的特性,channels 和 pipelines。这章在讨论共享变量,sync.Mutex
和 sync.RWMutex
类型前,将继续从上章留下的这点出发来了解更多关于 goroutines,channels 和 select
关键字。这章也包括一些代码示例用于说明信号 channels,缓冲 channels,空 channels 和 channels 的 channels 的使用。另外,这章的前期您将了解俩个技巧用于一个 goroutine 在给定时间后的超时处理,因为没人能保证所有的 goroutines 能在期望的时间前都完成。这章将以检查竞争条件,context
标准包和工作池来结束。
在玩转 Go 的本章中,您将了解到如下主题:
select
关键字- Go 调度器如何工作
- 俩个技巧用于一个完成时长超过预期的 goroutine 的超时处理
- 信号 channels
- 缓冲 channels
- 空 channels
- 监控 goroutines
- channels 的 channels
- 共享内存和互斥器
sync.Mutex
和sync.RWMutex
类型contenxt
包和它的功能- 工作池
- 探测竞争条件