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
- 所有这些任务特定的东西。
那么我在转换中失去了什么?
如果不是,则没有理由创建一种以上的数据类型。
所以给出的差异是这意味着我失去了调度的公平性交谈后Task
到IO
?
好吧,我应该自己验证一下,但我不知道如何测试它的公平性。
Monix Task 没有针对 cats-effect 3 进行更新,也不可能永远更新,因此目前这是一个没有实际意义的问题 - 如果您想使用当前的生态系统,您可以使用IO
monix 作者是 cats-effect 的主要贡献者,目前 monix 任务中几乎没有任何功能,而这些功能也无法通过 IO 来完成。