(Created page with " //Dining philosopher using threads #include<stdio.h> #include<pthread.h> void* reader(void*); pthread_mutex_t mut[5]; int n; int main() { pthread_t t1[5]; int i,j=0,k; ...")
 
Line 1: Line 1:
 
+
<syntaxhighlight lang="c">
 
//Dining philosopher using threads
 
//Dining philosopher using threads
  
Line 33: Line 33:
 
   printf("%d Finished Eating\n",val+1);
 
   printf("%d Finished Eating\n",val+1);
 
}
 
}
 
+
</syntaxhighlight>
  
  
 
[[Operating System Codes]]
 
[[Operating System Codes]]

Revision as of 00:11, 19 November 2013

<syntaxhighlight lang="c"> //Dining philosopher using threads

  1. include<stdio.h>
  2. include<pthread.h>

void* reader(void*); pthread_mutex_t mut[5]; int n; int main() {

 pthread_t t1[5];
 int i,j=0,k;
n = 5;
 for(i=0;i<n;i++)
   {
     j=i;
     pthread_create(&t1[i],NULL,reader,&j);
   }
 for(j=0;j<n;j++)
   pthread_join(t1[j],NULL);
 return 1;

} void *reader(void* arg) {

 int val=*(int*)arg;
 printf("%d Thinking\n",val+1);
 pthread_mutex_lock(&mut[val%n]);
 pthread_mutex_lock(&mut[(val+1)%n]);
 printf("%d Eating\n",val+1);
 sleep(3);
 pthread_mutex_unlock(&mut[val%n]);
 pthread_mutex_unlock(&mut[(val+1)%n]);
 printf("%d Finished Eating\n",val+1);

} </syntaxhighlight>


Operating System Codes

<syntaxhighlight lang="c"> //Dining philosopher using threads

  1. include<stdio.h>
  2. include<pthread.h>

void* reader(void*); pthread_mutex_t mut[5]; int n; int main() {

 pthread_t t1[5];
 int i,j=0,k;
n = 5;
 for(i=0;i<n;i++)
   {
     j=i;
     pthread_create(&t1[i],NULL,reader,&j);
   }
 for(j=0;j<n;j++)
   pthread_join(t1[j],NULL);
 return 1;

} void *reader(void* arg) {

 int val=*(int*)arg;
 printf("%d Thinking\n",val+1);
 pthread_mutex_lock(&mut[val%n]);
 pthread_mutex_lock(&mut[(val+1)%n]);
 printf("%d Eating\n",val+1);
 sleep(3);
 pthread_mutex_unlock(&mut[val%n]);
 pthread_mutex_unlock(&mut[(val+1)%n]);
 printf("%d Finished Eating\n",val+1);

} </syntaxhighlight>


Operating System Codes