本篇解析 example-channel-05.kt。探讨如何利用管道进行复杂的数学计算。
1. 核心算法:埃拉托斯特尼筛法
通过不断地过滤掉已知素数的倍数,从而在无限整数序列中筛选出素数。
核心步骤:
- **numbersFrom(2)**:生成从 2 开始的无限整数流。
- 取出第一个数:它是当前流中的第一个素数(例如 2)。
- **filter(cur, 2)**:创建一个过滤器,把能被 2 整除的数全部拦住,产出一个新流。
- 循环往复:不断取出新流的第一个数,再加一个新的过滤器。
2. 开发者总结
这个例子展示了协程的极度轻量:每一个过滤器实际上都是一个新的协程在后台运行。即使叠加了几十层过滤器,协程也能保持高效的并发处理。这种将复杂计算通过管道解耦到微小任务(协程)中的思路,是高阶并发开发的精华。