Bu çözüm iki süreçten oluşmaktadır.C dilinde gösterimi aşağıdaki gibidir.
int no_of_processes; //süreç numarası
int turn;
int interested[no_of_processes]; //ilk değerler false
void enter_region(int process);{
int other;//diğer sürecin numarası
other=1-process;//zıt süreçler
interested[process]=TRUE;
turn=process;
while(turn==process&&interested[other]==TRUE);//bekliyor
}
void leave_region(int process){
interested[process]=FALSE;// süreç kritik bölgeyi terkediyor
}
Kritik kısmına(critical region) girmek üzere olan süreç giriş kısmını(enter_region) çağırmak zorundadır.Kritik kısmın sonunda bitiş kısmı(leave_region) çağrılır.Başlangıçta her iki süreçte kritik kısımda değiller ve interested dizisi süreçlerin elemanlarını false yapar.
Süreç 0 ın enter_region ı çağırdığını varsayalım.other değişkeni (1- process) olarak belirlenmiştir.while'a gelmeden önce turn değişkeni de belirlenmektedir.Bu durumda süreç 1 çalışmıyor iken diğer süreç kendi kritik kısmına(critical region)girebilir.
Şimdi süreç 1 enter region u çağırabilir.Süreç 0 işlemdeyken beklemek zorundadır.Süreç 1 in sadece interested[0] olduğunda devam etmesine izin verilecektir
Eğer her iki süreçte enter region u aynı anda çağırırsa,süreçlerden biri turn değişkenini belirler fakat bu durum anlaşılır olmaz.
Süreç 0'ın turn değişkenini 0 yaptığnı ve ardındanda süreç 1 'in turn değişkenini 1 yaptıgını varsayalım.Bu durumda süreç 0 kritik kısma girebilir fakat süreç 1 beklemek zorundadır.