Параллельное выполнение evalTap для fs2.Stream - PullRequest
0 голосов
/ 13 ноября 2018

Я использую 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]?

...