加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 使用Actors池是否有意义?

发布时间:2020-12-16 08:59:20 所属栏目:安全 来源:网络整理
导读:我只是在学习,并且非常喜欢Actor模式.我现在正在使用 Scala,但我对建筑风格感兴趣,因为它在Scala,Erlang,Groovy等中使用. 我正在考虑的情况是我需要同时做的事情,例如,让我们说“做一份工作”. 使用线程,我将创建一个线程池和一个阻塞队列,并让每个线程轮询
我只是在学习,并且非常喜欢Actor模式.我现在正在使用 Scala,但我对建筑风格感兴趣,因为它在Scala,Erlang,Groovy等中使用.

我正在考虑的情况是我需要同时做的事情,例如,让我们说“做一份工作”.

使用线程,我将创建一个线程池和一个阻塞队列,并让每个线程轮询阻塞队列,并在进入和离开队列时处理作业.

有了演员,处理这个问题的最佳方法是什么?是否有意义创建一个演员池,并以某种方式向他们发送包含或作业的消息?也许与“协调员”演员?

注意:我忘记提到的案例的一个方面是:如果我想约束我的应用程序将同时处理的作业数量该怎么办?也许配置设置?我当时认为游泳池可能很容易做到这一点.

谢谢!

解决方法

有时,限制在大型任务列表上同时运行的工作进程数量是有意义的,因为生成该流程的任务涉及资源分配.至少进程耗尽内存,但它们也可以保持打开的文件和/或套接字,这些文件和/或套接字往往只限于数千个,并且一旦用完就会失败并且难以预测.

要有一个拉动驱动的任务池,可以生成N个请求任务的链接进程,一方面可以生成一个可以spawn_monitor的函数.一旦受监控的流程结束,他们就会回来完成下一个任务.具体需求推动了细节,但这是一种方法的概述.

我让每个任务产生一个新进程的原因是进程确实有一些状态,开始一个干净的平板是很好的.将过程的最小堆大小调整为最小化其生命周期内所需的GC数量是一种常见的微调.它也是一个非常有效的垃圾收集,可以为进程释放所有内存,并为下一个任务启动新内存.

使用两次这样的进程数量会感觉很奇怪吗?这是Erlang编程中需要克服的感觉.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读