Bird
Raised Fist0
Node.jsframework~5 mins

Worker thread vs child process in Node.js - Quick Revision & Key Differences

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is a Worker Thread in Node.js?
A Worker Thread is a way to run JavaScript code in parallel within the same Node.js process. It shares memory with the main thread but runs independently to perform CPU-intensive tasks without blocking the main event loop.
Click to reveal answer
beginner
What is a Child Process in Node.js?
A Child Process is a separate process created by the main Node.js process. It runs independently with its own memory and event loop, allowing you to run external programs or scripts without blocking the main process.
Click to reveal answer
intermediate
How do Worker Threads and Child Processes differ in memory usage?
Worker Threads share memory with the main thread using SharedArrayBuffer, which allows faster communication. Child Processes have separate memory spaces, so communication happens via inter-process messaging, which is slower.
Click to reveal answer
intermediate
When should you use a Worker Thread instead of a Child Process?
Use Worker Threads for CPU-heavy JavaScript tasks that need to run in parallel but share data efficiently. They are lighter and faster for tasks within Node.js. Use Child Processes when you need to run external programs or isolate tasks completely.
Click to reveal answer
advanced
What is a key limitation of Worker Threads compared to Child Processes?
Worker Threads run in the same process, so if a Worker Thread crashes, it can affect the main process. Child Processes are isolated, so a crash in a child does not crash the main process.
Click to reveal answer
Which Node.js feature runs JavaScript code in parallel within the same process?
AEvent Loop
BChild Process
CWorker Thread
DCallback Function
Which runs in a separate memory space and process?
AWorker Thread
BChild Process
CPromise
DAsync Function
Which is better for running external programs from Node.js?
AChild Process
BsetTimeout
CWorker Thread
DEvent Loop
Which communicates faster due to shared memory?
AWorker Thread
BFile System
CHTTP Request
DChild Process
What happens if a Worker Thread crashes?
AOnly the Worker Thread stops, main process continues
BNothing happens
CChild Process restarts automatically
DMain process crashes too
Explain the main differences between Worker Threads and Child Processes in Node.js.
Think about memory, process isolation, and use cases.
You got /5 concepts.
    When would you choose a Child Process over a Worker Thread in a Node.js application?
    Consider isolation and running non-JS code.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which statement best describes the difference between worker threads and child processes in Node.js?
      easy
      A. Worker threads run in the same process sharing memory, while child processes run in separate processes with separate memory.
      B. Worker threads run separate programs, child processes share the same memory space.
      C. Both worker threads and child processes run in the same process and share memory.
      D. Child processes run inside worker threads to improve performance.

      Solution

      1. Step 1: Understand worker threads behavior

        Worker threads run JavaScript code in parallel but inside the same Node.js process and share memory.
      2. Step 2: Understand child processes behavior

        Child processes run completely separate programs with their own memory space and communicate via messages.
      3. Final Answer:

        Worker threads run in the same process sharing memory, while child processes run in separate processes with separate memory. -> Option A
      4. Quick Check:

        Worker threads share memory, child processes do not [OK]
      Hint: Remember: threads share memory, processes do not [OK]
      Common Mistakes:
      • Confusing memory sharing between threads and processes
      • Thinking child processes share memory
      • Assuming worker threads run separate programs
      2. Which of the following is the correct way to create a worker thread in Node.js?
      easy
      A. const worker = spawn('worker.js');
      B. const worker = fork('worker.js');
      C. const worker = createThread('worker.js');
      D. const worker = new Worker('worker.js');

      Solution

      1. Step 1: Recall worker thread creation syntax

        Worker threads are created using the Worker class from the worker_threads module.
      2. Step 2: Identify correct constructor usage

        The correct syntax is new Worker('filename'). The fork and spawn methods are for child processes.
      3. Final Answer:

        const worker = new Worker('worker.js'); -> Option D
      4. Quick Check:

        Worker threads use new Worker() [OK]
      Hint: Use new Worker() for threads, fork/spawn for processes [OK]
      Common Mistakes:
      • Using fork() to create worker threads
      • Using spawn() for worker threads
      • Using non-existent createThread() function
      3. Consider this Node.js code snippet using a child process:
      const { fork } = require('child_process');
      const child = fork('child.js');
      child.on('message', msg => console.log('Parent got:', msg));
      child.send('Hello');

      What will the parent process output if child.js sends back { reply: 'Hi' } on receiving a message?
      medium
      A. Parent got: Hello
      B. Parent got: { reply: 'Hi' }
      C. Parent got: Hi
      D. No output, error occurs

      Solution

      1. Step 1: Understand child process communication

        The parent sends 'Hello' to the child. The child responds with an object { reply: 'Hi' } via process.send().
      2. Step 2: Analyze parent's message event handler

        The parent's child.on('message') receives the object and logs it as Parent got: { reply: 'Hi' }.
      3. Final Answer:

        Parent got: { reply: 'Hi' } -> Option B
      4. Quick Check:

        Child sends object, parent logs object [OK]
      Hint: Child sends object, parent logs exact message [OK]
      Common Mistakes:
      • Assuming string 'Hi' instead of object
      • Expecting parent's message to be 'Hello'
      • Confusing child and parent message directions
      4. What is wrong with this code snippet that tries to create a worker thread?
      const { Worker } = require('worker_threads');
      const worker = Worker('worker.js');
      medium
      A. The file 'worker.js' must be a JSON file
      B. Wrong module imported, should be 'child_process'
      C. Missing new keyword before Worker constructor
      D. Worker threads cannot be created with a filename

      Solution

      1. Step 1: Check Worker thread creation syntax

        The Worker class must be instantiated with the new keyword.
      2. Step 2: Identify error in code

        The code calls Worker('worker.js') without new, causing a TypeError.
      3. Final Answer:

        Missing new keyword before Worker constructor -> Option C
      4. Quick Check:

        Use new Worker() to create threads [OK]
      Hint: Always use new with Worker() constructor [OK]
      Common Mistakes:
      • Forgetting new keyword
      • Importing wrong module for threads
      • Thinking worker.js must be JSON
      5. You want to perform a CPU-heavy task in Node.js without blocking the main event loop. Which approach is best and why?
      hard
      A. Use a child process to run the task in a separate process communicating via messages.
      B. Use a worker thread to run the task sharing memory with the main thread.
      C. Run the task directly in the main thread asynchronously.
      D. Use setTimeout to delay the task execution in the main thread.

      Solution

      1. Step 1: Understand CPU-heavy task impact

        CPU-heavy tasks block the main event loop if run directly, causing app unresponsiveness.
      2. Step 2: Compare worker threads and child processes for heavy tasks

        Worker threads share memory but still run in the same process, which can cause contention. Child processes run in separate processes, isolating CPU load and preventing blocking.
      3. Step 3: Evaluate other options

        Running asynchronously in main thread or delaying with setTimeout does not prevent blocking for CPU-heavy tasks.
      4. Final Answer:

        Use a child process to run the task in a separate process communicating via messages. -> Option A
      5. Quick Check:

        Heavy CPU tasks best isolated in child processes [OK]
      Hint: Heavy CPU tasks? Use child processes to avoid blocking [OK]
      Common Mistakes:
      • Assuming worker threads fully isolate CPU load
      • Thinking async or setTimeout avoids CPU blocking
      • Ignoring message communication overhead