Readers / Writers Problem
Readers/Writers problem models access to a database. It is
acceptable to have multiple processes reading the database at the same
time, but if one process is updating (writing) the database, no other
processes may have access to the database, no even readers.
References:
P.J. Corbato, F. Heymans, and D.L. Parans, Concurrent Control with Readers and
Writers, Commun. of the ACM, vol. 10,
pp. 667-668. Oct. 1971
Jean Bacon, Conncurrent systems Operating Systems, Database and
Distributed Systems: An integrated Approach, 2nd Edition,
Addison-Wesley, pp. 286-289
Andrew S. Tanenbaum and Albert S. Woodhull, Operating Systems: Design and
Implementation, 2nd Edition, Prentice-Hall, pp. 77-80
Bradford Nichols, Dick Buttlar and Jacqueline Proulx Farrell, Pthreads
Programming, O'Reilly & Associates, Inc., pp. 84-89
Solution 1 use at your own risk
We demand of our solution that no reader be kept waiting unless a
writer has already obtained permission to use the resources; i.e. no
reader should wait simply because a writer is waiting for other
readers to finish. It is possible that a writer could wait indefinitly
while a stream of readers arrived.
Solution 2 use at your own risk
We give priority to writers in which once a writer is ready to write,
he performs his "write" as soon as possible. Readers are allowed to
wait indefinitely while a stream of writers is working.
Solution 3 use at your own risk
When a reader arrives and a writer is waiting, the reader is suspended
behind the writer instead of being admitted immediately. In this way,
a writer has to wait for readers that were active when it arrived to
finish but does not to wait for readers that came along after it.