协程进阶:通道 05. 管道案例:素数序列 (Primes)

本篇解析 example-channel-05.kt。探讨如何利用管道进行复杂的数学计算。

1. 核心算法:埃拉托斯特尼筛法

通过不断地过滤掉已知素数的倍数,从而在无限整数序列中筛选出素数。

核心步骤:

  1. **numbersFrom(2)**:生成从 2 开始的无限整数流。
  2. 取出第一个数:它是当前流中的第一个素数(例如 2)。
  3. **filter(cur, 2)**:创建一个过滤器,把能被 2 整除的数全部拦住,产出一个新流。
  4. 循环往复:不断取出新流的第一个数,再加一个新的过滤器。

2. 开发者总结

这个例子展示了协程的极度轻量:每一个过滤器实际上都是一个新的协程在后台运行。即使叠加了几十层过滤器,协程也能保持高效的并发处理。这种将复杂计算通过管道解耦到微小任务(协程)中的思路,是高阶并发开发的精华。

,