NodeJS开发一定要会用的工作池收藏

北京看痤疮好的医院 http://baijiahao.baidu.com/s?id=1689204421470077907&wfr=spider&for=pc

在实际项目中,如果遇到需要大计算量的操作,按需fork(分叉)其实不是一个好的选择。

因为fork的子进程也是V8(NodeJS的核心引擎)的新实例,每创建一个新实例,需要约30毫秒启动时间,和至少10MB的初始内存。

也就是说,创建进程是有代价的,你不能创建太多,也不能频繁创建。那样,达不到提高进程效率的目的。

那么,该如何高效优雅的使用子进程呢?工作池!

工作池!

合理的办法是创建一个可用的工作池,在池中存放足够多的进程,并可以随时分配使用。

我们对上一节讲的内容进行升级:当父进程发送一个任务给子进程时,子进程执行任务。并将结果向主进程反馈。

在父进程中,需要的代码会是这样的:

functiondoWork(job,cb){varchild=cp.fork(./worker);//发送工作给子进程child.send(job);//希望子进程返回一个确切的消息child.once(message,function(result){cb(null,result);})}

嗯...这样讲有些凌乱,这一章比较复杂,最好的办法,还是写一个完整的代码,做为例子:

1、father.js,主进程

var


转载请注明:http://www.aierlanlan.com/rzdk/2646.html

  • 上一篇文章:
  •   
  • 下一篇文章: