Definition


A version of the program that executes multiple tasks simultaneously

Example: execute queries one at a time, but issue I/O requests against different files disks simultaneously

Could read from several index files at once, processing the IO results as they arrive

Correctly and efficiently managing access to shared resources across multiple possibly-simultaneous tasks

The OS context switches between threads/processes

This is not parallelism! Parallelism is when multiple CPUs work simultaneously on 1 job

Why Threads?

Why Process