一、视频信息
1、视频观看地址
https://www.youtube.com/watch?v=KBZlN0izeiY
2、PPT下载地址http://download.csdn.net/download/xunzaosiyecao/10212884
3、博文https://about.sourcegraph.com/go/understanding-channels-kavya-joshi/
二、Go 的并发特性- goroutines: 独立执行每个任务,并可能并行执行
- channels: 用于 goroutines 之间的通讯、同步
对于下面这样的非并发的程序:
func main() {
tasks := getTasks()
// 处理每个任务
for _, task := range tasks {
process(task)
}
}
将其转换为 Go 的并发模式很容易,使用典型的 Task Queue 的模式:
func main() {
// 创建带缓冲的 channel
ch := make(chan Task, 3)
// 运行固定数量的 workers
for i := 0; i < numWorkers; i++ {
go worker(ch)
}
// 发送任务到 workers
hellaTasks := getTasks()
for _, task := range hellaTasks {
ch
关注
打赏