code: def put(self, iocb):
          
          if _debug: IOQueue._debug("put %r", iocb)
  
          # requests should be pending before being queued
          if iocb.ioState != PENDING:
              raise RuntimeError("invalid state transition")
  
          # save that it might have been empty
          wasempty = not self.notempty.isSet()
  
          # add the request to the end of the list of iocb's at same priority
          priority = iocb.ioPriority
          item = (priority, iocb)
          self.queue.insert(bisect_left(self.queue, (priority+1,)), item)
  
          # point the iocb back to this queue
          iocb.ioQueue = self
  
          # set the event, queue is no longer empty
          self.notempty.set()
  
          return wasempty
docs: Add an IOCB to a queue.  This is usually called by the function
          that filters requests and passes them out to the correct processing
          thread.