chilld process可以生成一个子进程,但是怎么处理父进程的任务呢?我查了官方文档,说是send方法可以传递一个TCP服务器或者Server,那么我父进程的任务怎么传递给子进程来帮我分担作业呢?
不是很理解,请问能更详细说明吗,worker是cluster的,我现在想不用cluster,自己写一个多进程的。比如我想父进程获取到任务后,拆分成多个子任务,分别传递给子进程,然后子进程执行完毕后,直接执行并且将结果send给父进程,我目前的想法是,能不能找到一个类似于send的方式,通过类似parent.send(function(){},callback)的方式来分配任务,一楼说的IPC message就是send办法吗?我试了试传递function但是好像不可以
父进程fork一个子进程出来,然后在父进程监听onMessage事件,用于监听子进程的传递消息,当子进程有消息传递过来,父进程中就能接收到。子进程执行完成之后,将返回结果通过send方法传递给父进程。如果要使用父进程传递过来的参数,也可以在子进程中添加onMessage事件。
@iflet 我明白怎么传参,但是传的参数不能是function,哪怕send(message)这个message对象中的属性值为function都会在子进程中忽略。也就是说,如果仅仅是传参,那么就必须在子进程中预设好对应执行的函数,无法做到动态分配任务,这样限制性太大了,所以想知道是不是有别的办法还是说我哪一步做错了
@atian25 因为我现在想做一个可帮我自动分担任务的一个东西,比如说我现在要进行1000个文件的处理,我可以根据我的子进程数量,拆分成不同的子任务,再交给子进程去处理,处理完毕后将结果返回给主进程。不知道这样的想法可不可行,因为最近一直在看child process所以有了这样的想法。
@HyperClockUp function有上下文环境,有各种外部引用,还可能调用其他的function,所以跨进程直接传递function是不现实的。
不传function就不能动态分配任务了吗?