我如何使它实际上是平行的?
首先,在单节点应用程序中您实际上不会并行运行。节点应用程序在单个线程上运行,并且节点的事件循环一次仅处理一个事件。即使在多核计算机上运行,您也不会在节点应用程序中获得并行处理。
也就是说,您可以通过将代码分叉到单独的节点进程中或通过生成子进程来在多核计算机上实现并行处理。实际上,这允许您创建节点本身的多个实例,并以不同的方式(例如,stdout,进程派生IPC机制)与这些进程进行通信。此外,您可以选择将功能(按职责)分离到各自的节点应用程序/服务器中,并通过RPC进行调用。
异步 代码通常不阻止调用者的事情是什么(使用NodeJS时)? 它开始一个子进程吗?
它没有开始新的过程。在下面,当在node.js中使用async.parallel时,它正在使用
process.nextTick()。并且nextTick()允许您通过将工作推迟到新的堆栈上来避免阻塞调用者,从而可以交织cpu密集型任务等。
长话短说
节点无法轻松实现“开箱即用”的多处理器并发。相反,Node为您提供了非阻塞设计和事件循环,该事件循环利用线程而不共享内存。多个线程不能共享数据/内存,因此不需要锁。节点是无
锁的 。一个节点进程利用一个线程,这使节点既安全又强大。
当您需要在多个进程之间分配工作时,请使用某种消息传递方式与其他进程/服务器进行通信。 例如IPC / RPC。
有关更多信息,请参见:
SO关于什么是Node.js给出了很棒的答案…很好。
了解process.nextTick()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)