Worker Thread
Background
Doing CPU intensive work like calculating the Fibonacci of a number or checking if a number is prime or not or heavy machine learning stuff is gonna make the application struggle because node only uses a single core of your CPU no matter how many cores you have.
As the request is handled with single thread on nodeJs, if the event loop is blocked by high workload, the upcoming request will also be blocked
In prevent from the blocking of event loop, we should separate the workload into another thread, called worker thread
Introduction
When NodeJS process is launch, it gets launched with One process, One thread, One event loop, One V8 Engine Instance,
A V8 isolate refers to a separate entity within the chrome V8 runtime. It possesses its own JS heap and a microtask queue. This unique setup enables every Node.js worker to execute its JavaScript code in complete isolation from other workers.this isolation comes at a cost — the workers are unable to directly access each other’s heaps.
An event-based messaging system is provided so values can be exchanged between the processes.
Worker Event
Worker offers few events which we can tie up with the callbacks we want
error : The
'error'
event is emitted if the worker thread throws an uncaught exception. In that case, the worker is terminated.online: The
'online'
event is emitted when the worker thread has started executing JavaScript code.
Example
Reference
Last updated
Was this helpful?