假设我有一个相当标准的生产者/消费者问题需要在Scala中编码,具有以下结构:
我知道我可以使用BlockingQueue,但这对我来说似乎太命令式了。我希望有一种方法可以让一个Stream在另一个线程中不断生成元素。
一旦我们提前生成它们,它就不再是惰性评估了。但我也不想急于评估整个流。我希望有一个函数式范例的BlockingQueue模拟。
- 构建一个惰性生成元素的Stream或Iterator。
- 在Stream或Iterator上使用map或foreach处理这些元素并对其进行操作。
我知道我可以使用BlockingQueue,但这对我来说似乎太命令式了。我希望有一种方法可以让一个Stream在另一个线程中不断生成元素。
一旦我们提前生成它们,它就不再是惰性评估了。但我也不想急于评估整个流。我希望有一个函数式范例的BlockingQueue模拟。
scalaz-stream
是最符合你要求的。Akka streams 也提供了一个对 Akka actors 进行流处理的函数式封装。这两者之间最大的区别在于 Akka streams 支持反压(back pressure)。 - Soumya Simanta