<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def acquire_reader(self):
 """ Acquire a read lock, several threads can hold this type of lock. """

        with self.mutex:
            while self.rwlock < 0 or self.rwlock == self.max_reader_concurrency or self.writers_waiting:
                self.readers_ok.wait()
            self.rwlock += 1