Em
programação concorrente, uma
região crítica - também conhecida por - é uma área de código de um
algoritmo que acessa um recurso compartilhado que não pode ser acedido
concorrentemente por mais de uma
linha de execução. O objetivo é tornar a operação sobre o recurso compartilhado
atômica. Uma região crítica geralmente termina num tempo específico, e uma linha de execução ou
processo só precisa esperar um tempo específico para entrá-la. Algum mecanismo de
sincronização é necessário para implementar a entrada e a saída duma região crítica para assegurar o uso exclusivo, como por exemplo um
semáforo.
O acesso concorrente pode ser evitado ao controlar cuidadosamente quais
variáveis são modificadas dentro e fora a região crítica. Uma região crítica é geralmente usada quando um programa
multitarefa deve atualizar diversas variáveis relacionadas sem que outra linha de execução faça modificações conflitantes nos dados. Numa situação relacionada, uma região crítica também pode ser usada para assegurar que um recurso compartilhado como uma
impressora seja acessado por somente um processo a cada vez.