在v8引擎中,js代码只能在主线程中运行。我的目标是在没有主线程的情况下运行js代码,这样CPU密集型任务就不能抢占主线程的cpu时间。 但我只是不知道如何实现目标。
好的,我删除了这个问题node.js
的标签,我不关心如何在node.js中利用多核的技巧。我正在编写一个基于本机v8 api的线程实现。请不要告诉node.js中使用的解决方案。事实上,我希望有人给我一些基于v8的c ++ api的指南。
This link解释为什么我们不能在没有主线程的情况下使用V8代码,在用户定义的线程中你只能运行本机c ++代码。这不是解决方案吗?
答案 0 :(得分:1)
你不需要潜水到如此低的水平。节点已经足够成熟,可以为这些类型提供更高级别的选项。
您可以使用child_process模块将主进程与child_process.fork()
分叉。然后,您可以让CPU密集型同步任务并行运行,而不会影响主进程。
如果您想利用多个流程作为应用的标准功能,那么cluster module就是您追求的目标。节点核心集群模块是大多数人通过运行多个节点进程并将工作委派给他们来利用多核系统的方式。集群模块为您处理细节,使其变得非常简单。只需查看the documentation中的一些示例。