scala – 使用Actors池是否有意义?
我只是在学习,并且非常喜欢Actor模式.我现在正在使用
Scala,但我对建筑风格感兴趣,因为它在Scala,Erlang,Groovy等中使用.
我正在考虑的情况是我需要同时做的事情,例如,让我们说“做一份工作”. 使用线程,我将创建一个线程池和一个阻塞队列,并让每个线程轮询阻塞队列,并在进入和离开队列时处理作业. 有了演员,处理这个问题的最佳方法是什么?是否有意义创建一个演员池,并以某种方式向他们发送包含或作业的消息?也许与“协调员”演员? 注意:我忘记提到的案例的一个方面是:如果我想约束我的应用程序将同时处理的作业数量该怎么办?也许配置设置?我当时认为游泳池可能很容易做到这一点. 谢谢! 解决方法
有时,限制在大型任务列表上同时运行的工作进程数量是有意义的,因为生成该流程的任务涉及资源分配.至少进程耗尽内存,但它们也可以保持打开的文件和/或套接字,这些文件和/或套接字往往只限于数千个,并且一旦用完就会失败并且难以预测.
要有一个拉动驱动的任务池,可以生成N个请求任务的链接进程,一方面可以生成一个可以spawn_monitor的函数.一旦受监控的流程结束,他们就会回来完成下一个任务.具体需求推动了细节,但这是一种方法的概述. 我让每个任务产生一个新进程的原因是进程确实有一些状态,开始一个干净的平板是很好的.将过程的最小堆大小调整为最小化其生命周期内所需的GC数量是一种常见的微调.它也是一个非常有效的垃圾收集,可以为进程释放所有内存,并为下一个任务启动新内存. 使用两次这样的进程数量会感觉很奇怪吗?这是Erlang编程中需要克服的感觉. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |