我怎么知道我已经达到Node中定义的线程限制?

时间:2019-01-16 07:59:44

标签: javascript node.js multithreading c++11 threadpool

我将线程池的大小限制为25。

process.env.UV_THREADPOOL_SIZE = 25;

如何知道运行时所有线程都已耗尽?

有什么方法可以找到所有定义线程在 一个新请求?

我正在使用Node.js(NAN)的本机抽象来调用C ++函数。对于每个对C ++的请求,都会创建Nan :: AsyncQueueWorker。在这里,我想查找线程限制是否已用尽,然后添加一个安全系数。

3 个答案:

答案 0 :(得分:6)

您要在nan或js中实现吗?

在Nan impl中:

您必须手动执行。维护一个映射,键为int且值为workAsyn。推入每个呼叫,并在workAsyn完成时删除。针对每个请求执行此操作。

将地图的大小与定义的线程限制进行比较。

答案 1 :(得分:2)

我分析了nanlibuv的来源。不幸的是,现在无法获得已使用线程的数量。如果只是要自己添加此功能。

答案 2 :(得分:1)

这个cluster模块似乎可以提供帮助...

 var cluster = require('../')
    ,http = require('http');

 var server = http.createServer(function(req, res){
   res.writeHead(200);
   res.end('Hello World');
 });

 var workerCount = 0;

 cluster(server)
   .listen(3000)
   .on('worker',()=> {
     workerCount++;
     console.log('workerCount',workerCount)
   })
   .on('worker killed',()=> { 
     workerCount--; 
     console.log('workerCount',workerCount)
   })

似乎还可以使用REPL“ telnet”插件直接从master访问工作人员计数...

http://learnboost.github.io/cluster/docs/stats.html

Docs