Implementing Readers and Writers
reader() {
lockSem->P();
readers++;
if(readers == 1)
writeSem->P();
lockSem->V();
read();
lockSem->P();
readers--;
if(readers == 0)
writeSem->V();
lockSem->V();
}
writer() {
writeSem->P();
write();
writeSem->V();
}
In this version, readers are never kept waiting
Writers may starve
Previous slide
Next slide
Back to first slide
View graphic version