class_docstr: A simple reader-writer lock Several readers can hold the lock
  simultaneously, XOR one writer. Write locks have priority over reads to
  prevent write starvation.
class_docstr_tok: ["A","simple","reader-writer","lock","Several","readers","can","hold","the","lock","simultaneously",",","XOR","one","writer",".","Write","locks","have","priority","over","reads","to","prevent","write","starvation","."]
docstr: Acquire a read lock. Several threads can hold this typeof lock.
  It is exclusive with write locks.
docstr_tok: ["Acquire","a","read","lock",".","Several","threads","can","hold","this","typeof","lock",".","It","is","exclusive","with","write","locks","."]
code: def acquire_read(self):
      """
      Acquire a read lock. Several threads can hold this typeof lock.
      It is exclusive with write locks.
      """
      self.monitor.acquire()
      while self.rwlock < 0 or self.writers_waiting:
          self.readers_ok.wait()
      self.rwlock += 1
      self.monitor.release()
  
imports: import threading
label_desc: Use image node_id 2 for calling the RWLock obj's underlying member method code with example usage: obj.acquire_read() without return types