node.js – 在nodejs中实现CPU绑定任务的方法

我使用nodejs作为Web服务器,它解码GET参数并以某种编码格式返回数据.使用nodejs的加密模块完成解码/编码,这似乎是同步的.虽然服务单个请求所花费的时间足够快,但阻止事件循环使得服务在并发性方面表现不佳.

我的要求很简单,在事件循环之外进行编码/解码功能.

>单独进程(child_process或cluster)

这可以是仅用于此目的的单独进程,但由于编码/解码将在子进程中阻塞,这将阻止子进程接收新消息,即,永远不会出现两个字符串被编码为子进程的情况也将是单线程的.

>每个请求的单独线程(threads-a-gogo或fiber或node-webworker)

为每个请求创建一个单独的线程来执行编码/解码操作,但是没有一个模块似乎按预期工作,即线程-a-gogo不能通过npm安装,光纤没有在运行时创建单独的线程(),node-webworker not working.

有人遇到过类似的问题,或者有一些方法可以通过简单的消息传递轻松地在nodejs中创建线程.

解决方法

这内置于节点的子进程中.文件在这里

http://nodejs.org/api/child_process.html#child_process_child_send_message_sendhandle

你也可以使用集群:

http://nodejs.org/api/cluster.html#cluster_cluster_fork_env

使用集群,它将工作如下:

if (cluster.isMaster) {
  var worker = cluster.fork();
  worker.send('encodeThisstring');

} else if (cluster.isWorker) {
  process.on('message',function(msg) {
    var encrypted = crypto.doSomeEncryption(msg);
    process.send(encrypted);
  });
}

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...