Node.js和线程

时间:2013-10-13 22:14:11

标签: javascript node.js web-worker

我正在开发一个完全无阻塞的node.js应用程序。

但是有一些CPU密集型功能:

  • CryptoJS.AES解密/加密
  • uuid creation
  • 从数据创建内容

现在我发现一个模块使用线程从CPU密集型任务中卸载事件循环: node-webworker-threads

我现在应该创建:

  1. 在应用启动时:每个功能一个线程,因此AES.decrypt是一个线程,AES.encrypt等等。
  2. 在应用启动时:每个功能一个线程池? (多少个线程?每个CPU核心1个?)
  3. 执行时:输入每个功能的新线程,并在完成后将其销毁?
  4. 线程是我还不完全理解的东西..

1 个答案:

答案 0 :(得分:5)

这实际上取决于您的申请。如果您使用固定大小的线程池,则如果请求数量> gt,则必须实现队列。可用线程数,可能会导致一些拥塞。

最好的方法(在我看来当然)是为每个请求生成一个新线程,它处理AES,UUID和数据。也就是说,每个请求执行所有计算的一个线程。完成所有操作后,返回线程中的结果并将其终止。

这当然可以在高负载服务器上产生许多线程;但会保持你的事件循环清晰。

编辑:This thread可能对您有用。