2

我想在 Scala 中将反射与并行处理结合使用,但我被反射缺乏线程安全性所困扰。所以,我正在考虑只在自己的进程(而不是线程)中运行每个任务。有什么简单的方法可以做到这一点?

例如,有没有办法配置.par它产生进程,而不是线程?或者是否有一些函数fork需要一个闭包并在一个新进程中运行它?

编辑:期货显然是一个好方法。但是,我仍然需要弄清楚如何在单独的进程中运行它们。

编辑 2:即使使用 Akka 的“fork-join-executor”调度程序,我仍然遇到并发问题,这听起来确实应该是分叉进程。但是,当我ManagementFactory.getRuntimeMXBean().getName()在 Futures 中运行时,似乎一切仍然存在于同一个过程中。这是检查实际进程级并行性的正确方法吗?我是否使用了正确的 Akka 调度程序?

编辑 3:我意识到反射很糟糕。不幸的是,它在我需要的库中使用。

4

2 回答 2

4

您是否研究过 Scala ActorsAkka?使用 Scala 可能没有比并行和异步编程更令人信服的理由了。它融入了语言。看看这些设施。我很确定你会找到你需要的东西。

于 2013-10-24T23:53:19.927 回答
0

关于您在这里尝试解决的问题的信息很少......以前的答案几乎是在球上 - 看看演员等......Akka,你可能会发现你不需要做任何太复杂的事情. 多线程环境中的自省/反思通常意味着在分解手头的问题方面的混乱且没有经过深思熟虑的策略。

于 2013-10-25T00:12:11.627 回答