我正在使用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]
?