Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 执行可能昂贵的任务_Multithreading_Node.js_Process - Fatal编程技术网

Multithreading 执行可能昂贵的任务

Multithreading 执行可能昂贵的任务,multithreading,node.js,process,Multithreading,Node.js,Process,我有一个nodejs tcp服务器,它处理许多子服务器的状态,当发生一些事情时,状态服务器会告诉子服务器执行一个操作,这可能会很昂贵,大多数情况下会非常昂贵(大约一分钟),有时会在几秒钟内完成 由于子服务器所做的工作(侦听WebSocket并非常频繁地来回传递大量数据),我无法承受在操作这项昂贵任务时让子服务器暂停的代价 显然,如果没有一些混乱的线程实现,nodejs无法生成新线程。是否值得生成一个新进程来执行这项可能非常昂贵的任务,我可以通过从父服务器发送的命令来确定它何时会非常昂贵。Node

我有一个nodejs tcp服务器,它处理许多子服务器的状态,当发生一些事情时,状态服务器会告诉子服务器执行一个操作,这可能会很昂贵,大多数情况下会非常昂贵(大约一分钟),有时会在几秒钟内完成

由于子服务器所做的工作(侦听WebSocket并非常频繁地来回传递大量数据),我无法承受在操作这项昂贵任务时让子服务器暂停的代价


显然,如果没有一些混乱的线程实现,nodejs无法生成新线程。是否值得生成一个新进程来执行这项可能非常昂贵的任务,我可以通过从父服务器发送的命令来确定它何时会非常昂贵。

Node.js确实能够生成其他进程,并且它可以很好地处理它们。查看node.js文档中的child_进程,特别是fork命令,该命令允许生成其他node.js作业并通过消息通道与它们通信


难道不可能使用消息队列来创建几个工作进程吗?正如文档中所说:“这些子节点仍然是V8的全新实例。假设每个新节点至少有30毫秒的启动时间和10 MB的内存。也就是说,你不能创建数千个。”你不能创建很多这样的子节点。但是如果你不产生那么多进程,它可能会起作用。如果这是一个昂贵的操作,如问题中所述,那么无论如何,你不应该产生许多这样的进程。似乎产生进程将比让它在父进程中进行更昂贵,我想我已经找到了我的答案,谢谢。只要您不介意在任务期间阻止父进程。请记住,在这个漫长的过程结束之前,他们将无法处理任何其他传入的请求。