However, writers will be blocked out, until all readers have finished. In fact, some unlucky writers may get blocked indefinitely. Only requests at the front of the queue can try to get the lock. However, concurrency and efficiency may be negatively impacted. Some opportunities for parallel access will be lost.
Queue processing is serial in nature.
A naive implementation of FIFO policy can lead to deadlock situation where a non-FIFO implementation may avoid it. Here is an example to illustrate the point. Client X holds a read lock, and client Y is queued up for a write lock. If client X requests for a write lock, the system must grant it if it is to avoid a deadlock. Say we put client X's write lock request to the back of the queue.