OS Ass 4b
OS Ass 4b
#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>
#include<semaphore.h>
#include<unistd.h>
void main()
{
long int i;
pthread_mutex_init(&mutex,0);
sem_init(&wrt,0,1);
pthread_t reader[100],writer[100];
printf("\n Enter number of readers:");
scanf("%d",&nrd);
printf("\n Enter number of writers:");
scanf("%d",&nwt);
for(i=1;i<=nwt;i++)
{
pthread_create(&writer[i],NULL,(void *)writer_thr,(int *)i);
pthread_join(writer[i],NULL);
}
for(i=1;i<=nrd;i++)
{
pthread_create(&reader[i],NULL,(void *)reader_thr,(int *)i);
}
for(i=1;i<=nrd;i++)
{
pthread_join(reader[i],NULL);
}
sem_destroy(&wrt);
pthread_mutex_destroy(&mutex);
pthread_mutex_lock(&mutex);
readcount--;
if(readcount==0)
sem_post(&wrt);
pthread_mutex_unlock(&mutex);
printf("\nReader %d has left the database.\n",temp);
sleep(3);
}
Result :-
pvg@pvg-HP-ProDesk-400-G4-SFF:~/3030$ cc 4b.c -o th -lpthread
pvg@pvg-HP-ProDesk-400-G4-SFF:~/3030$ ./th