Blokkering er prosessen der en tråd midlertidig suspenderes fra utførelse fordi den venter på at en bestemt hendelse skal inntreffe. Dette kan skje av en rekke årsaker, for eksempel:
* Venter på I/O: En tråd kan blokkeres mens du venter på at data skal leses fra eller skrives til en fil, eller at en nettverkstilkobling skal opprettes.
* Venter på en lås: En tråd kan bli blokkert mens du venter på at en annen tråd skal frigjøre en lås på en ressurs.
* Venter på en betingelsesvariabel: En tråd kan bli blokkert mens du venter på at en tilstandsvariabel skal signaliseres.
Blokkering er en viktig del av trådsynkronisering, da det sikrer at tråder ikke får tilgang til delte ressurser samtidig. Blokkering kan imidlertid også føre til vranglås, som oppstår når to eller flere tråder venter på at hverandre skal frigjøre låser.
For å unngå vranglås er det viktig å utforme trådsynkroniseringsmekanismer nøye. En måte å gjøre dette på er å bruke låsefrie algoritmer, som ikke krever tråder for å skaffe låser. En annen måte er å bruke en deadlock-deteksjonsalgoritme, som kan oppdage og løse deadlocks når de oppstår.