Uyuyan berber algoritması hakkında ufak bir sunum yapmam gerekiyor.
Konu ile ilgili Sadi Evren ŞEKER hocanım çok güzel bir yazısına denk geldim ama paylaşmış olduğu pseudo kodu tam olarak yorumlayamıyorum.
Kod bu şekilde,
anlam veremediğim yerde sem_init - sem_post kullanımları
Yardımcı olursanız sevinirim.
sem_init(&mutex,0,1);
sem_init(&musteri,0,0);
sem_init(&berberler,0,1);
void berber(void *arg)/*Berber
Process*/
{
sem_wait(&musteri);
sem_wait(&mutex);
sayac--;
printf("Barber:saçı kesilen:%d. kişin",sayac);
sem_post(&mutex);
sem_post(&berberler);
sleep(3); // burada müşteriyi traş ediyor
}
void musteri(void *arg)/*musteri Process*/
{
sem_wait(&mutex);
if(sayac sayac++;
printf("Bekleyen musteri sayisi :%d
oldun",sayac);
sem_post(&mutex);
sem_post(&customer);
sem_wait(&berberler);
printf(“Müşteri: traş oldum”);
}
else{
printf(“Musteriyi kaybettik”);
sem_post(&mutex);
}
sleep(1);
}
Yazıya sizlerde bakabilirsiniz.
http://bilgisayarkavramlari.sadievrenseker.com/2012/04/17/sleeping-barber-uyuyan-berber-problemi/