Blokering er den proces, hvorved en tråd midlertidigt suspenderes fra eksekvering, fordi den venter på, at en bestemt hændelse opstår. Dette kan ske af en række forskellige årsager, såsom:
* Venter på I/O: En tråd kan være blokeret, mens man venter på, at data bliver læst fra eller skrevet til en fil, eller på, at der etableres en netværksforbindelse.
* Venter på en lås: En tråd kan være blokeret, mens man venter på, at en anden tråd frigiver en lås på en ressource.
* Venter på en betingelsesvariabel: En tråd kan være blokeret, mens man venter på, at en tilstandsvariabel bliver signaleret.
Blokering er en vigtig del af trådsynkronisering, da det sikrer, at tråde ikke får adgang til delte ressourcer på samme tid. Blokering kan dog også føre til deadlocks, som opstår, når to eller flere tråde venter på, at hinanden udløser låsene.
For at undgå deadlocks er det vigtigt at designe trådsynkroniseringsmekanismer omhyggeligt. En måde at gøre dette på er at bruge låsefri algoritmer, som ikke kræver tråde for at erhverve låse. En anden måde er at bruge en deadlock-detektionsalgoritme, som kan detektere og løse deadlocks, når de opstår.