【发布时间】:2017-07-11 11:42:24
【问题描述】:
在我的 Electron 应用程序的用户界面 (UI) 中,有一个按钮,当单击该按钮时,使用 child_process.fork() 启动另一个脚本。这个新的孩子使用process.send() 传达状态消息以更新UI 的进度。 这一切都很好。
然而,在子进程中,有时需要并行执行某些工作(阶段 6)。在 Stage6 中,我使用相同的 child_process.fork() 方法来启动 8 个工作人员。调试消息表明这 8 个工人确实分叉得很好;我在一个数组中保留了对它们的引用,一切看起来都很好。
问题是,一旦这 8 个工人被分叉,我再也没有收到他们的消息。 Stage6 永远不会收到他们使用 process.send() 发送的消息。就好像它们不存在一样。
现在,有趣的部分来了! 在 Electron 之外,我创建了一个测试脚本(在 CLI 上使用 Node)来启动这 8 个工作人员以与 Stage6 完全相同的方式,它们工作得很好,而且测试脚本听到他们的消息。所以问题不在于工人,而在于他们是如何启动的。
在 Electron 中,一个本身被分叉的进程(在我的例子中是来自 UI)是否也可以是“父进程”并分叉子进程?我们可以在叉子里面叉子吗?还是分叉太多了?
【问题讨论】:
-
你能给出一些示例代码吗?用于调试目的。一般来说,这应该工作。
标签: javascript node.js electron