我开始学习 Actor 模型(使用 Akka.net)并计划在当前项目中使用它。我当前的任务是使用 IFilter 从不同文件中提取文本。IFilter 是一组带有本机代码的 COM 服务器。有时它可能会挂起或处理进度过长。在这种情况下,我需要中止对问题文件的处理,并继续处理队列中的下一个文件。但是我需要终止整个过程才能正确清理本机代码。
另一个问题是生产力——在大多数情况下,我无法在单个进程中使用多个线程加载多个内核。我怀疑 IFilter 里面有锁。但是如果我运行我的测试应用程序的多个副本(它模拟多进程模式),我可以使用 CPU 的全部功能。
我的问题是:如何在不同的进程中部署一些参与者?
我发现可以通过这种方式在配置中指定参与者的部署策略(来自 Petabrige 讲座的示例):
<akka>
<hocon>
<![CDATA[
akka {
actor {
deployment {
/charting {
# causes ChartingActor to run on the UI thread for WinForms
dispatcher = akka.actor.synchronized-dispatcher
}
}
}
}
]]>
</hocon>
</akka>
其他选项包括:
- 单线程调度程序
- 线程池调度程序
- ForkJoinDispatcher
但是我在这里找不到在单独过程中进行部署的选项。
我该如何解决这个问题?