fs2.Stream的并发evalTap执行

时间:2018-11-13 12:44:55

标签: scala functional-programming stream fs2

我正在使用fs2.Stream,但对并发处理有疑问。我有一个fs2.Stream[F, O]Sink,它们可以表示为O => F[Unit]。因此可以使用

def observeAsync(maxQueued: Int)(sink: Sink[F, O])
                (implicit F: Concurrent[F]): Stream[F, O]

但是按照文档中的规定

  

请注意,如果您的接收器可以由O => F[Unit]表示,   evalTap将提供更高的性能。

我可以使用evalTap,但是它的签名中没有implicit F: Concurrent[F],因此我认为不可能为并发执行指定maxQueued绑定。

def evalTap[F2[x] >: F[x]: Functor](f: O => F2[Unit]): Stream[F2, O]

那么对我来说唯一的办法就是打电话给observeAsync?即使我的接收器实际上是O => F[Unit]

0 个答案:

没有答案