将Monix"任务"转换为猫"IO"后会丢失什么?



这个简化的情况是我的问题发生的地方......

object Main extends IOApp{
def run(args:Seq[String]): IO[ExitCode]={
Task{...}
.to[IO]
.as(ExitCode.Success)
}
}

另一种选择是Await.result(task),但这听起来不太符合IOApp的做法。

我所知道的

根据这篇伟大的帖子 Monix vs 猫效应
我看到TaskIO之间的差异是:

  • TaskAPI 比IO更丰富
  • Task线程调度公平性更智能、更自动
  • Task获得更多可取消的选项
  • 以及更多...

问题和我的意见

MonixTask转换为CatsIO后我失去了什么?

它似乎工作正常,Task.gathertimeout- 所有这些特定于任务的东西.
所以我在转换中丢失了什么?
如果没有,那么没有理由创建多个数据类型。

所以考虑到差异,这意味着我在与IO交谈后失去了Task的调度公平性


好吧,我应该自己验证它,但我不知道如何测试它的公平性。

Monix Task没有针对cats-effect 3进行更新,也不太可能更新,所以在这一点上这是一个有争议的问题 - 如果你想使用当前的生态系统,你使用IO

monix作者是猫效应的主要贡献者,在这一点上,monix 任务中几乎没有功能,这些功能也无法通过 IO 完成。

相关内容

  • 没有找到相关文章

最新更新