node在执行IO操作(读取文件)时会开启线程池(默认是4个),我们可以通过设置UV_THREADPOOL_SIZE增加线程池个数。
背景:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
const fs = require("fs");
process.env.UV_THREADPOOL_SIZE=64;
setInterval(() => {
fs.readFile(`${__dirname}/index.html`,()=>{
console.log("read success");
})
}, 3000);
{
"name": "threadpool",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start":"node index.js"
},
"keywords": [],
"author": "",
"license": "ISC"
}
在windows下运行node,发现process.env.UV_THREADPOOL_SIZE设置无效。
线程数量应该从12增加到76个,实际为16个,说明UV_THREADPOOL_SIZE设置无效
原因:
Linux系统下可以在js代码里直接设置,而windows系统下需要在执行node命令前设置线程池数量,将node启动改为如下图(注:=号左右不要有空格)
运行结果:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。