Em computadores, uma rotina de seção crítica é uma abordagem ao problema de dois ou mais programas competindo pelo mesmo recurso ao mesmo tempo. Imagine que dois programas querem incrementar um contador. Se ambos o fizerem ao mesmo tempo: buscar o operando , incrementá-lo e armazenar o valor incremental, então um dos incrementos será perdido. Nos processadores atuais, os programas podem usar uma instrução atômica de leitura-modificação-escrita, tal como fetch-and-op, compare-and-swap, ou exchange. Nos primeiros processadores, essas instruções não existiam; o problema era realizar o incremento atomicamente, usando apenas instruções assembler comuns. O problema foi definido e primeiro resolvido por Edsgar Dijkstra. "Critical section routine" foi seu nome para o código que resolveu o problema.