Kritisk region
(eller: critical region, critical section).
Et grundlæggende problem ved parallelle processer er at sikre udelelig ajourføring af data, som deles af flere processer. Er der ikke udelelig ajourføring, vil programmet ikke altid virke efter hensigten, afhængigt af processernes relative hastigheder, som kan variere fra gang til gang. Det klassiske eksempel er to processer, som begge tæller en fælles heltalsvariabel op og skriver dens værdi ud. Er der ikke udelelig adgang, vil de resulterende tal ikke altid danne en støt stigende række; der vil kunne ske pludselige tilbageskridt af vilkårlig længde.
Den del af programmet, som processen skal udføre udeleligt, kaldes en kritisk region. Der blev i midten af 1960'erne arbejdet intenst med at udvikle en algoritme, som ved at blive udført ved starten af den kritiske region kunne sikre udelelig adgang til resten, men først matematikeren T. Dekker fandt en løsning. Under arbejdet med denne problemkreds nåede E.W. Dijkstra frem til semaforer som en anden løsning på problemet; ved starten af en kritisk region udføres en "wait", ved slutningen en "signal".
En tredje løsning er "critical regions", som er en konstruktion for programmeringssprog. Disse kritiske regioner blev foreslået af såvel C.A.R. Hoare som Per Brinch Hansen i 1972, og sidstnævnte gav dem en konkret realisering i form af monitorer.

