Blockering är den process genom vilken en tråd tillfälligt avbryts från körning eftersom den väntar på att en viss händelse ska inträffa. Detta kan hända av en mängd olika anledningar, till exempel:
* Väntar på I/O: En tråd kan blockeras i väntan på att data ska läsas från eller skrivas till en fil, eller på att en nätverksanslutning upprättas.
* Väntar på ett lås: En tråd kan blockeras medan man väntar på att en annan tråd ska släppa ett lås på en resurs.
* Väntar på en villkorsvariabel: En tråd kan blockeras i väntan på att en tillståndsvariabel ska signaleras.
Blockering är en viktig del av trådsynkronisering, eftersom det säkerställer att trådar inte kommer åt delade resurser samtidigt. Blockering kan dock också leda till blockering, som uppstår när två eller flera trådar väntar på att varandra ska släppa lås.
För att undvika dödlägen är det viktigt att utforma trådsynkroniseringsmekanismer noggrant. Ett sätt att göra detta är att använda låsfria algoritmer, som inte kräver trådar för att skaffa lås. Ett annat sätt är att använda en detekteringsalgoritm för dödläge, som kan upptäcka och lösa dödlägen när de uppstår.