微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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);
  });
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐