Um mecanismo de sincronização clássico é conhecido como semáforo. Um semáforo é uma variável inteira não negativa que só pode ser manipulada por duas instruções, chamadas de instruções Down e Up. Para evitar a espera ocupada, que desperdiça tempo de processamento da máquina, a operação Down utiliza uma estrutura de dados, geralmente uma First In, First Out (FIFO).
Quando um processo executa a instrução Down num semáforo que tem o valor zero, o processo
- A segue a sua execução normal, e o semáforo permanece com o valor zero.
- B segue a sua execução normal, e o semáforo é incrementado de uma unidade.
- C entra no estado de espera, e o semáforo permanece com o valor zero.
- D entra no estado de espera, e o semáforo é incrementado de uma unidade.
- E entra no estado de espera, e outro processo é retirado da fila de espera do semáforo.