La concorrenza è un concetto logico e progettuale che descrive la presenza di più flussi di esecuzione (processi o thread) attivi nello stesso intervallo di tempo, che possono avanzare in modo intercalato o cooperativo. Essa è indipendente dall’hardware e può essere realizzata anche su sistemi single-core tramite meccanismi di scheduling (come time slicing) e context switch; introduce la necessità di gestire correttamente la sincronizzazione e l’accesso a risorse condivise.

N.B. Su un processore single-core viene eseguito un solo thread per volta, ma più thread possono essere gestiti tramite context switch, che ne alterna l’esecuzione nel tempo.