How to handle Child Threads in Node.js ? - GeeksforGeeks

10 Sep, 2021
Node.js is a single-threaded language and uses the multiple threads in the background for certain tasks as I/O calls but it does not expose child threads to the developer.But node.js gives us ways to work around if we really need to do some work parallelly to our main single thread process.Child Process in Node: The child_process module gives the node the ability to run the child process by accessing operating system commands.Example: Filename: parallelProcess.js  
javascript
// Do any work in parallel to main// event loop or main processconsole.log('Child Process Starts')setTimeout(() => {    console.log('Data processed')}, 5000)
Filename: main.js  
javascript
const { fork } = require('child_process');  // Fork another processconst child_process = fork('./parallelProcess.js'); // Data we may need to send to the child processconst data = {} console.log('Before process') // Send the data to forked processchild_process.send({ data }, function(){    console.log('Sending data')}); // Listen to forked processchild_process.on('close', (result) => {    console.log('Child process terminated and returned');}); console.log('After process')
Output:  
Before process
After process
Child Process Starts
Data processed
Child process terminated and returned
Worker Threads The worker_threads module enables the use of threads that execute JavaScript in parallel. Worker’s threads are useful for performing CPU-intensive JavaScript operations. They will not help much with I/O-intensive work which can be done better using Node.js built-in asynchronous I/O operations.Example:  
javascript
const {Worker, isMainThread, parentPort}            = require('worker_threads'); if (isMainThread) {     // Main code, only executed for main thread    const worker = new Worker(__filename, {        workerData: {}    });     worker.on('message', (m) => console.log(                  'Thread send message:', m));     worker.on('error', () => console.log('Error'));    worker.on('exit', () => {        console.log('Worker exit')    });} else {     // Worker thread code, only execute    // for working thread.    setTimeout(() => {        parentPort.postMessage('Hello World!');    }, 3000)}
Output:  
Thread send message: Hello World!
Worker exit
The process has its own memory space on other hand, threads use the shared memory space. Thread is part of the process. Since worker_threads make new threads inside the same process it requires fewer resources.Reference: https://nodejs.org/api/child_process.html https://nodejs.org/api/worker_threads.html 
anikakapoor
Node.js-Misc
Picked
Node.js
Web Technologies
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Node.js fs.writeFile() Method
How to install the previous version of node.js and npm ?
Difference between promise and async await in Node.js
How to use an ES6 import in Node.js?
How to read and write Excel file in Node.js ?
Remove elements from a JavaScript Array
Convert a string to an integer in JavaScript
How to fetch data from an API in ReactJS ?
How to insert spaces/tabs in text using HTML/CSS?
Difference between var, let and const keywords in JavaScript