我是 Quasar 的新手,想知道是否有类似下面的示例。 或者即使有人可以指出我如何做到这一点的正确方向。
所以我需要做的是读取一个json文件。 为每个索引创建一个新 Fiber 并传递 json 中的一些值。 每个 Fiber 都会根据 json 中的值创建一个执行函数。 但根据值的不同,有些纤维可能需要更长的时间才能完成。 最多等待 5 秒才能完成。
我假设所有这些光纤将并行运行。
这可能吗?任何例子都会很棒。
最佳答案
我是 Quasar 团队的一员。
Fibers 将同时运行,实际的并行度取决于您运行程序的 CPU 核心数量以及 Fibers 执行器的并行度级别,默认情况下,Fibers 执行器是一个具有多个工作线程的 ForkJoinPool线程数等于CPU核心数。
纤维的使用就像线程一样(但更轻量级):您生成它们,让它们完成它们的工作并加入它们。看起来在你的情况下你不需要更多的东西(尽管 Quasar 为光纤和线程提供了类似 Go 的 channel 、类似 Erlang 的 actor 和数据流),所以我建议你看看 fiber docs ,还有很多例子,但我特别建议你从 Gradle template 开始。
您可以将索引/值作为闭包变量传递给从匿名类创建的实例,或者您可以创建 Fiber
的命名子类并将它们作为构造函数参数接收。
记住 run the agent 。如果您需要构建包含代理的单个工件可执行 JAR,我建议您查看 Capsule 。
还可以考虑加入 Quasar-Pulsar user group 。
关于fiber - 类星体平行宇宙的例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36795467/