将 Monix `Task` 转换为 Cats `IO` 后会丢失什么?

Wei*_*Lin 8 multithreading functional-programming scala scala-cats monix

这个简化的案例是我的问题发生在...

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

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

我知道的

根据这个伟大的帖子Monix vs Cats Effect
我看到之间Task IO的差异是:

  • Task API比 IO
  • Task在线程调度公平性方面更加智能和自动化
  • Task 获得更多可取消选项
  • 和更多 ...

问题和我的意见

转换Monix Task成后我失去了什么Casts IO

它似乎可以正常工作,Task.gather并且timeout- 所有这些任务特定的东西。
那么我在转换中失去了什么?
如果不是,则没有理由创建一种以上的数据类型。

所以给出的差异是这意味着我失去了调度的公平性交谈后TaskIO


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

Dae*_*yth 0

Monix Task 没有针对 cats-effect 3 进行更新,也不可能永远更新,因此目前这是一个没有实际意义的问题 - 如果您想使用当前的生态系统,您可以使用IO

monix 作者是 cats-effect 的主要贡献者,目前 monix 任务中几乎没有任何功能,而这些功能也无法通过 IO 来完成。