Pandora.js让进程间通信更容易

更新日期: 2021-11-30阅读: 1.3k标签: 进程

简洁的进程间对象代理

经过努力,我们提出了『简洁的进程间对象代理』,看下面的例子会清楚得多:


在 PID 为 1 的进程中:

const {publishObject} = require('pandora');
const processInfo = {
  async getPid() {
    return process.pid; // 假定 PID 是 1
  } 
}
// 发布 processInfo 在 IPCHub 中,并命名为 processInfo
await publishObject('processInfo', processInfo);


在 PID 为 2 的进程中:

const {getProxy} = require('pandora');

// 获得 processInfo 的代理对象
const processInfo = await getProxy('processInfo');

// 调用 getPid() 方法,当然这里需要增加 await,
// 每个代理过来的方法都会变成 async 形式。
// 不过好在 await 一个非 async 的方法也不会出错,
// 所以一般业务逻辑都可以良好的兼容原始对象和代理对象。
const pid = await processInfo.getPid();

// 将会打印 PID 为 1 的进程的 PID: 1
console.log(pid);


强大到,就连 Node.js 内置的对象都可以!

// 进程 A
const {publishObject} = require('pandora');
publishObject('math', Math);
// 进程 B
const {getProxy} = require('pandora');
const mathProxy = getProxy('math');
// 将会打印 4
console.log(await mathProxy.pow(2, 2));


Service 发布到 IPC-Hub

module.exports = function(pandora) {
     pandora.service('serviceName', './serviceImpl.js').publish();
     // 直接把这个 Service 发布到 IPC-Hub 中去
     // ,当然名字就叫 serviceName 啦~
}

链接: https://www.fly63.com/article/detial/10890

Node.js的进程与子进程:从文档到实践

process 模块是 nodejs 提供给开发者用来和当前进程交互的工具,它的提供了很多实用的 API。从文档出发,管中窥豹,进一步认识和学习 process 模块:

nodejs如何启动多进程?

Node.js 以单线程的模式运行,使用事件驱动来处理异步 IO 并发(底层是多线程的线程池)。然而,要是 Node 运行在一个多核 CPU 上,如何让 Node 充分利用多核的优势,并行地处理任务?

Node.js几种创建子进程方法

其中exec可用于在指定的shell当中执行命令。不同参数间使用空格隔开,可用于复杂的命令。传给回调的stdout和stderr参数会包含子进程的stdout和stderr的输出。

NodeJS 进程是如何退出的

有几种因素可以导致 NodeJS 进程退出。在这些因素中,有些是可预防的,比如代码抛出了一个异常;有些是不可预防的,比如内存耗尽。process 这个全局变量是一个 Event Emitter 实例,如果进程优雅退出,process 会派发一个 exit 事件

进程和线程有什么区别?

从用户的角度来看,进程是正在运行的程序实例,而线程是进程中真正执行任务的基本单位。也就是说一个运行的程序至少包含一个进程,一个进程至少包含一个线程,线程不能独立于进程而存在。

进程与线程,你了解多少?

进程与线程,在面试中经常会被问到,或者实际开发中经常遇到。那什么是进程?什么是线程?你对他们了解有多少?我们经常会说:一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程。

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!