节点C ++模块vs libuv线程池大小

时间:2017-03-27 14:19:31

标签: c++ multithreading threadpool libuv node.js-nan

我编写了一个Nodejs C ++模块,该模块利用NAN的AsyncWorker来公开异步模块功能。效果很好。但是,据我所知,AsyncWorker使用了libuv的线程池,默认只有4个线程。

虽然这个(或基于#ofof-cores的限制)可能对CPU繁重的功能有意义,但是我的一些暴露功能可能运行时间相对较长,即使他们不使用CPU(网络活动,等等)。因此,即使没有进行任何计算密集型工作,线程池也可能会全部用完。

简单的解决方案是增加线程池大小(UV_THREADPOOL_SIZE)。但是,我担心这个线程池也用于其他事情,由于过多的并行化而可能会受到性能损失(libuv文档声明,"线程池是全局的并且在所有事件循环中共享。 .."。)

我的担忧有效吗?有没有办法只为某些长期运行但没有CPU强度的AsyncWorker使用一个单独的,更大的线程池,同时保持公共线程池不受影响?

0 个答案:

没有答案