node.js 能否实现子进程休眠

最近在做一个进程管理工具,想在社区问下,使用fork方式创建的子进程能否实现休眠。休眠之后减少系统资源占用,然后能在某个时机手动通过某种方式再给唤醒。

阅读 2.7k
1 个回答

一、如果是让进程暂停的话,可以向进程发送 SIGSTOP 信号,发送 SIGCONT 信号可以恢复进程。

node.js:

process.kill([pid], "SIGSTOP");
process.kill([pid], "SIGCONT");

unix system (windows 暂未测试):

kill -STOP [pid]
kill -CONT [pid]

二、Node.js 新的 Atomic.wait API 也可以做到编程控制。该方法会监听一个 Int32Array 对象的给定下标下的值,若值未发生改变,则一直等待(阻塞 event loop),直到发生超时(由 ms 参数决定)。可以在主进程中操作这块共享数据,然后为子进程解除休眠锁定。

const nil = new Int32Array(new SharedArrayBuffer(4));
const array = new Array(100000).fill(0);
setInterval(() => {
console.log(1);
}, 1e3);
Atomics.wait(nil, 0, 0, Number(600e3));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题