Arjun Suresh (talk | contribs) |
|||
Line 13: | Line 13: | ||
{ | { | ||
pthread_t t1[5]; | pthread_t t1[5]; | ||
− | int i,j=0,k; | + | int i,j = 0,k; |
n = 5; | n = 5; | ||
− | for(i=0;i<n;i++) | + | for(i = 0; i < n; i++) |
{ | { | ||
j=i; | j=i; | ||
− | pthread_create(&t1[i],NULL,reader,&j); | + | pthread_create(&t1[i], NULL, reader, &j); |
} | } | ||
− | for(j=0;j<n;j++) | + | for(j = 0; j < n; j++) |
− | pthread_join(t1[j],NULL); | + | pthread_join(t1[j], NULL); |
return 1; | return 1; | ||
} | } | ||
Line 27: | Line 27: | ||
void *reader(void* arg) | void *reader(void* arg) | ||
{ | { | ||
− | int val=*(int*)arg; | + | int val = *(int*)arg; |
− | printf("%d Thinking\n",val+1); | + | printf("%d Thinking\n", val + 1); |
− | pthread_mutex_lock(&mut[val%n]); | + | pthread_mutex_lock(&mut[val % n]); |
− | pthread_mutex_lock(&mut[(val+1)%n]); | + | pthread_mutex_lock(&mut[(val + 1) % n]); |
− | printf("%d Eating\n",val+1); | + | printf("%d Eating\n", val + 1); |
sleep(3); | sleep(3); | ||
− | pthread_mutex_unlock(&mut[val%n]); | + | pthread_mutex_unlock(&mut[val % n]); |
− | pthread_mutex_unlock(&mut[(val+1)%n]); | + | pthread_mutex_unlock(&mut[(val + 1) % n]); |
− | printf("%d Finished Eating\n",val+1); | + | printf("%d Finished Eating\n",val + 1); |
} | } | ||
</syntaxhighlight> | </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>
<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>