Process
A process is an independent program in execution.
Think of it as a running instance of a program (like Chrome, Word, or Python script).
Each process has:
o Its own memory space (can’t directly access another process’s memory).
o Its own resources (CPU time, file handles, etc.).
o At least one thread (the “main thread”).
When to Use Processes
Use processes when:
1. Tasks are CPU-bound → heavy computa on that maxes out the processor.
2. You want true parallelism on multi-core CPUs.
3. You need fault isolation (one crash doesn’t kill everything).
Examples:
1. Image processing app → Each process applies different filters to an image in parallel.
2. Data science computations → Training a machine learning model → split work across
multiple cores using processes.
3. Browser (like Chrome) → Each tab is a separate process so if one crashes, others s ll work.
Thread
A thread is the smallest unit of execution within a process that shares the process's memory
and resources.
A process can have multiple threads.
Threads:
o Share the same memory space of the process.
o Can access the same variables and resources.
o Run independently, but if one crashes, it can bring down the whole process.
When to Use Threads
Use threads when:
1. Tasks are I/O-bound → wai ng on input/output (disk, network, user input).
2. Tasks need to share memory/state easily.
3. You want lightweight parallelism within a single application.
Examples:
1. Web server → Each client request handled by a thread. Threads share the server’s memory
and database connections.
2. Text editor → One thread handles typing, another handles spellcheck, another autosaves.
3. Chat app → One thread listens for messages, another sends messages, another updates UI.
Key Differences:
Aspect Process Thread
Smallest execution unit inside a
Definition Program in execution
process
Memory Own memory space (Isolated) Shared memory (within process)
Resource Sharing Processes do not share Threads within a process share
resources directly. code, data, and resources.
Heavy (starting/stopping takes Light (faster to create/switch due
Overhead (Context more time/resources) – to being less resource intensive) –
Switching +
Creation/Termination)
requires more interaction with it only involves switching
the OS registers, not memory maps
Needs IPC – Interp ersonal
Easier & Faster (shared variables
Communication Communication (pipes, sockets,
in same memory)
etc.)
One process crash doesn’t One bad thread can crash the
Error Impact
affect others whole process
Tab handling, video playback,
Example Chrome app itself
rendering
Processes offer isolation and security due to separate memory but have higher overhead for
creation and communication. Threads enable efficient multitasking and resource sharing within a
single process, allowing for faster execution and better CPU utilization, though a thread error can
affect the entire process. Basically, use threads when tasks are mostly waiting (I/O-bound) & use
processes when tasks are heavy computation (CPU-bound) or need isolation.
[Link]
threads/#:~:text=That%20said%2C%20there%20is%20a,treated%20as%20a%20lower%20priority.