//Dining Philosophers
Program:
#include<stdio.h>
#include<semaphore.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<pthread.h>
struct{
int data[5];
sem_t *mutex[5];
}sh;
char *name[]={"p1","p2","p3","p4","p5"};
void *work(void *);
main()
{
pthread_t tid[5];
int i;
for(i=0;i<5;i++)
{
sh.mutex[i]=sem_open(name[i],O_CREAT,S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP,1);//
}
pthread_setconcurrency(6);
setbuf(stdout,NULL);
for(i=0;i<5;i++)
pthread_create(&tid[i],NULL,work,&i);
for(i=0;i<5;i++)
pthread_join(tid[i],NULL);
for(i=0;i<5;i++)
sem_unlink(name[i]);
}
void *work(void *arg)
{
int p,i=1;
p=*((int *)arg);
while(i++<2)
{
sem_wait(sh.mutex[p]);
sem_wait(sh.mutex[(p+1)%5]);
sh.data[p]=1;
printf("p%d[%d %d %d %d %d]\n",p+1,sh.data[0],sh.data[1],sh.data[2],sh.data[3],sh.data[4]);
sleep(1);//eating
sh.data[p]=0;
sem_post(sh.mutex[p]);
sem_post(sh.mutex[(p+1)%5]);
sleep(2);//thinking
}
}
Great and Useful Article.
ReplyDeleteJava Online Course
Java Online Training
Java EE training
Java Course in Chennai
Java Training in Chennai
Java Training Institutes in Chennai
Java Interview Questions
Java Interview Questions
I was very impressed by this post, this site has always been pleasant news. Thank you very much for such an interesting post. Keep working, great job! In my free time, I like play game: imgtaram. What about you?
ReplyDeleteI like your all post. You have done really good work. Thank you for the information you provide, it helped me a lot. I hope to have many more entries or so from you.
ReplyDeleteVery interesting blog.
www.baixarfacebookgratis.com.br
thnk u..good work..god bless u!!!!
ReplyDelete