这是对 go中关于chan应用的程序分析
文章中代码的流水流水线示意图。
- 我们假设gen,sq和print操作需要的时间单位都是1:
time | gen | sq | |
---|---|---|---|
1 | out:1 | ||
2 | out:2 | out: 1 | |
3 | out:3 | out: 4 | 1 |
4 | out:4 | out: 9 | 4 |
5 | out:5 | Out: 16 | 9 |
6 | out:6 | Out: 25 | 16 |
7 | out:7 | Out: 36 | 25 |
8 | out:8 | Out: 49 | 36 |
9 | close(out) | close(out) | done<- |
我们假设gen,sq和print没一个处理步骤是相同的,那我们就可以明显的看到一个流水线的形式,而最后我们给done这个通道推入数据,gen,sq同时关闭并退出。
- 但是在程序的主体运行部分,sq函数通常需要更多的时