Klasik IPC problemlerinden biride bir berber dükkanıyla alakalıdır.Bu berber dükkanında bir berber, bir berber sandalyesi ve n tane müşterilerin bekleyebilecegi sandalye vardır.Bahis konusu berberin hiç müşterisi yok ise berber sandalyesinde uyuyacaktır.Bir müşteri geldiginde, müşteri, berber uyuyorsa kaldırabiliyor eger berber calısıyorsa (birini tıraş ediyorsa),önce sandalyeleri ve kişileri sayacak, eger sandelyeler dolu ise tıras olmadan gidecek. Boş sandalye var ise boş sandalyeye oturup bekleyecek.Bizden istenilen ise bu soruna bir program ile cevap vermektir.Bizden istenen ise berber ve müşterilerin hızından bagımsız olarak bir program gelistirmektir.Asagıda bu kod verilmistir.


#include"prototypes.h"void berber(void)void müsteri(void){
#define SANDALYE 5 //tıras
olmak icin bekleyen müsterilerin koltuj sayısı
{down(mutex);
int müsteriler=0;while(TRUE){if(bekleyenler
int berberler=0;down(müsteriler);bekleyenler=bekleyenler+1;
int durum=1;down(durum);up(müsteriler);
int bekleyenler=0;bekleyenler=bekleyenler-1;up(durum);
up(berberler);down(berberler);
up(durum);get_haircut();
cut_hair();}else{
{up(mutex);
{}
}

Yukarıdaki örnek kodda üç tane degisken kullanılmıştır.Bunlardan müşteri degişkeni,müşterilerin sayısını, berberler adlı degisken berberlerin sayısını, durum degiskeni de berberlerin aktifligini gösteren bir degiskendir(bu degisken herhangi bir anda tıras yapan berberlerin tırasının bitip bitmediginin bilgisini tutar).Bunlardan farklı bir degisken olarak müsteriler, sandalyelerdeki oturan müsteri sayısını tutmaktadır.(Aslında bu bekleyenlerin bir kopyasıdır.).Kodda kullanılan up fonksiyonu, aldıgı degeri bir artırır,down fonksiyonu ise aldıgı degeri bir azaltır.Bu kodda göze alınmamış bir durum olarak, iceri giren müşteri icerdeki koltuk sayısını sayacak ve müşteri sayısından az ise bos olan yere oturacaktır.

İlk gelen berber sabah dükkanı acacak ve kodumuzdaki berber fonksiyonunu calıstıracaktır.Daha sonra eger müsteri gelmez ise müşterilerin tıraş oldugu koltuga oturacak ve uykuya dalacaktır.

İlk gelen müşteri, müsteri fonksiyonunu calıstıracak ve berber meşgul anlamındaki durum degiskeni bir azalacaktır.Daha sonraki gelen müşteriler, eger uyuyan berber varsa uyandıracak ve tıras olmaya baslıyacak.eger uyuyan berber yoksa, boş sandalyeye bakacak, varsa oturup bekleyecek ve müşteriler degişkeni bir artacak, yoksa tıras olamadan gidecektir.Müşterinin tırası bittiginde durum degiskeni degerini bir artıracak.Tabi müşteriler bu durumun farkında olacaklar.Eger müşteri varsa diger bir müsteri durum degiskenini bir azaltıp tırasa baslayacak eger yoksa berber uyuyacaktır.
Tırası biten müşteri, müşteri fonksiyonundan cıkar ve berber dükkanından da cıkmıs olur.