Estoy experimentando con subprocesos múltiples en NodeJS y hurgando con el código a continuación
const crypto = require('crypto'); const start = Date.now(); crypto.pbkdf2('a', 'b', 100000, 512, 'sha512', () => { console.log('1:', Date.now() - start); }); crypto.pbkdf2('a', 'b', 100000, 512, 'sha512', () => { console.log('2:', Date.now() - start); }); crypto.pbkdf2('a', 'b', 100000, 512, 'sha512', () => { console.log('3:', Date.now() - start); }); crypto.pbkdf2('a', 'b', 100000, 512, 'sha512', () => { console.log('4:', Date.now() - start); }); crypto.pbkdf2('a', 'b', 100000, 512, 'sha512', () => { console.log('5:', Date.now() - start); }); Corríjame si me equivoco, por defecto, libuv tiene un tamaño de grupo de subprocesos de 4 como se indica aquí . Entonces, al ejecutar el código anterior, cada crypto.pbkdf2 se asigna a un hilo individual y se ejecuta al mismo tiempo, mientras que el quinto esperará un tiempo para ejecutarse. A continuación se muestra el resultado
1: 484 2: 490 3: 490 4: 490 5: 963 Puedo entender que el quinto crypto.pbkdf2 duplica el tiempo debido a que los subprocesos se ejecutan en paralelo, por lo que ahora estoy explorando aumentar el tamaño del grupo de subprocesos. A continuación se muestra mi intento, pero el resultado parece ser idéntico.
$ set UV_THREADPOOL_SIZE=120 && node threads.js 2: 487 3: 492 1: 493 4: 493 5: 986Debe verificar si realmente ha configurado correctamente la variable de entorno simplemente con console.log(process.env.UV_THREADPOOL_SIZE) y, si lo hace, se dará cuenta de que no está undefined .
El problema es cómo invocas tu comando, debería ser como se muestra a continuación.
UV_THREADPOOL_SIZE=120 node threads.js