Question 67
Question
Explain the difference between Worker
and SharedWorker
in web workers.
Answer
1. Worker
:
Purpose: Designed for individual tasks that need to run independently.
Isolation: Each
Worker
instance operates completely isolated from other workers and the main thread. They have their own separate scopes, variables, and memory.Communication: Communication with a
Worker
is done using messages:The main thread sends messages to the worker using
worker.postMessage()
.The worker responds to the main thread by sending messages back through
onmessage
events on the main thread.
2. SharedWorker
:
Purpose: Primarily for scenarios where multiple scripts (or different parts of the same script) need to share data and communicate in a synchronized way.
Sharing: Multiple tabs or windows can connect to the same
SharedWorker
instance, allowing them to share data and collaborate on tasks.Communication:
Similar message-based communication as
Worker
, usingpostMessage()
andonmessage
.The
SharedWorker
maintains a global state accessible by all connected clients. Changes made by one client are immediately visible to others.
When to Use Which:
Feature
Worker
SharedWorker
Isolation
High - Each worker is completely separate
Lower - Multiple scripts share state
Communication
Message-based, one-to-one with main thread
Message-based, multiple clients share state
Use Cases
Intensive computations, background tasks
Data sharing between tabs/windows, collaborative applications
In a nutshell: Worker
is for isolated tasks that don't need to share data. SharedWorker
is for scenarios where collaboration and shared data are essential.
Last updated