如何控制正在运行的工作进程的数量?
erlang 中 gen_server 的设计模式是什么,用于创建固定数量的工作进程并为它们提供“作业”来执行某些操作?每个工作进程都与具有连接限制的外部服务进行通信。 “工作”的数量被认为是无限的。在 C 中,我会通过创建一个工作线程池和一个异步来做到这一点。由互斥锁保护的队列(容量有限),为池提供来自提交者的作业。
What is a design pattern in erlang in terms of gen_server to create a fixed number of worker processes and feed them with 'jobs' to perform some actions ? Each worker process talks with an external service which has connection limits. Number of 'jobs' considered to be unlimited. In C I'd do that by creating a pool of worker threads and an async. queue (with limited capacity) guarded by mutex to feed the pool with jobs from the submitter.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
让 gen_server 在您的工作进程上放置一个监视器,当一个进程死亡时(作业完成或崩溃)会产生另一个进程。
Have the gen_server put a monitor on your worker processes, and when one dies (either job finished, or crash) spawn another one.