Dada uma seção crítica x, podemos definir primitivas enter(x), para que uma tarefa indique sua intenção de entrar na seção crítica x, e leave(x), para que uma tarefa na seção crítica informe que está saindo da mesma. enter(x) é bloqueante, ou seja, caso uma tarefa já esteja ocupando a seção x, as demais tarefas que tentarem entrar deverão aguardar até que a primeira libere x atráves de leave(x)