Professional Documents
Culture Documents
Os 8
Os 8
PRACTICAL – 8
Aim:
Write a program to implement reader/writer problem using
semaphore.
sem_wait(&mutex);
read_count++;
if (read_count == 1) {
sem_wait(&rw_mutex);
}
sem_post(&mutex);
cout << "Reader " << reader_id << " is reading data: " <<data << endl;
sem_wait(&mutex);
read_count--;
if (read_count == 0) {
sem_post(&rw_mutex);
}
sem_post(&mutex); int
usleep(1000000);
pthread_exit(NULL);
}
GAURAV KUMAR(IT-1)
(02515003120)
P a g e | 37
sem_wait(&rw_mutex);
data++;
cout << "Writer " << writer_id << " is writing data: " <<data << endl;
sem_post(&rw_mutex);int
usleep(1000000);
pthread_exit(NULL);
}
int main() {
const int NUM_READERS = 3;const
int NUM_WRITERS = 2;
pthread_t readers[NUM_READERS];
pthread_t writers[NUM_WRITERS];
sem_init(&rw_mutex, 0, 1);
sem_init(&mutex, 0, 1);
GAURAV KUMAR(IT-1)
(02515003120)
P a g e | 38
sem_destroy(&rw_mutex);
sem_destroy(&mutex);
return 0;
}
OUTPUT:
GAURAV KUMAR(IT-1)
(02515003120)