Arjun Suresh (talk | contribs) |
Arjun Suresh (talk | contribs) |
||
Line 4: | Line 4: | ||
#include<stdio.h> | #include<stdio.h> | ||
#include<pthread.h> | #include<pthread.h> | ||
+ | |||
void* reader(void*); | void* reader(void*); | ||
pthread_mutex_t mut[5]; | pthread_mutex_t mut[5]; | ||
int n; | int n; | ||
+ | |||
int main() | int main() | ||
{ | { | ||
pthread_t t1[5]; | pthread_t t1[5]; | ||
int i,j=0,k; | int i,j=0,k; | ||
− | + | n = 5; | |
for(i=0;i<n;i++) | for(i=0;i<n;i++) | ||
{ | { | ||
Line 21: | Line 23: | ||
return 1; | return 1; | ||
} | } | ||
+ | |||
void *reader(void* arg) | void *reader(void* arg) | ||
{ | { |
<syntaxhighlight lang="c"> //Dining philosopher using threads
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>
<syntaxhighlight lang="c"> //Dining philosopher using threads
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>