После прочтения этого замечательного ответа о природе темы Node
Я начал играть с системной переменной UV_THREADPOOL_SIZE
, чтобы изменить размер пула потоков, и нашел что-то интересное:
Когда я устанавливаю
process.env.UV_THREADPOOL_SIZE = 10;
Я получаю 15 потоков в моем процессе Node (я думал, что это должно быть 10 + 1 главная Node thread = 11).
Посмотрите на мой script:
process.env.UV_THREADPOOL_SIZE = 10;
//init thread pool by calling `readFile` function
require('fs').readFile(__filename, 'utf8', function(err, content) {});
//make node not exiting
setInterval(function() {}, 1000);
После запуска я печатаю:
ps -Lef | grep test.js | grep -v grep
и получите следующие результаты:
olegssh 4869 4301 4869 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4870 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4871 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4872 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4873 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4874 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4875 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4876 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4877 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4878 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4879 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4880 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4881 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4882 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4883 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
Как вы видите, существует 15 потоков.
Если я устанавливаю UV_THREADPOOL_SIZE = 1
, я получаю 6 потоков.
Если я прокомментирую строку readFile
(так что пул потоков не инициализирован), я получаю 5 потоков.
Итак, я делаю вывод, что Node при запуске создает 5 потоков. Почему не 1?
Может кто-нибудь пролить свет на это?
Изменить: Я использую новый Node 4.0.0