Kritieke sectieEen kritieke sectie is een stuk broncode dat door hooguit één thread tegelijk mag worden uitgevoerd omdat er gedeelde resourcen (bijvoorbeeld variabelen, datastructuren of apparaten) in worden gebruikt. Deze kritieke secties kunnen voorkomen in gedistribueerde computerprogramma's. Een synchronisatiemechanisme, zoals semaforen of monitors, moet voor en na de kritieke sectie worden geplaatst om er voor te zorgen dat niet meer dan één thread de code uitvoert. Door kritieke secties te beschermen met synchronisatiemechanismen wordt voorkomen dat threads het werk van andere threads incorrect aanpassen of geheel ongedaan maken. De synchronisatie zorgt ervoor dat de toegang tot de gedeelde gegevens na elkaar plaatsvindt. Als verschillende threads dezelfde kritieke sectie willen uitvoeren dan moeten deze op elkaar wachten totdat zij in de gelegenheid worden gesteld om de kritieke sectie uit te voeren. Beschermen van kritieke sectiesHet beschermen van kritieke secties is nodig om te voorkomen dat berekeningen van verschillende threads ongedaan gemaakt worden of ongewenste resultaten opleveren. Het volgende voorbeeld geeft een idee van de problemen die zich kunnen voordoen. Stel we hebben twee threads die de volgende code willen uitvoeren, in een gangbare programmeertaal zou dit er uit kunnen zien als variabele c lezen variabele c ophogen variabele c wegschrijven Deze threads worden door de scheduler van het besturingssysteem in staat gesteld om de code uit te voeren. De volgorde waarin de statements van beide threads worden uitgevoerd wordt bepaald door de scheduler. Het is mogelijk dat de threads afwisselend statements mogen uitvoeren of dat de statements op een andere manier achter elkaar worden geplaatst. Het gewenste resultaat is in dit geval dat beide threads de variabele Stel dat de statements van beide threads in deze volgorde worden uitgevoerd: variabele c lezen variabele c lezen variabele c ophogen variabele c wegschrijven variabele c ophogen variabele c wegschrijven Beide threads lezen dezelfde waarde die in de variabele |