code: def start(self):
          
          if not (self.__recv_thread or self.__send_thread):
              self.__end.clear()
              self.__send_ready.clear()
              self.__recv_ready.clear()
              timeout = self.__socket_timeout + 1
              ignore_exc = self.__startup_ignore_exc
              self.__send_exc_clear()
              self.__recv_exc_clear()
  
              # start & await send thread success (unless timeout reached or an exception has occured)
              self.__send_thread = Thread(target=self.__send_run, name='amqplink_send')
              self.__send_thread.start()
              start_time = monotonic()
              success = False
              while not (success or (not ignore_exc and self.__send_exc) or monotonic() - start_time > timeout):
                  success = self.__send_ready.wait(.25)
  
              if success:
                  # start & await receiver thread success
                  self.__recv_thread = Thread(target=self.__recv_run, name='amqplink_recv')
                  self.__recv_thread.start()
                  start_time = monotonic()
                  success = False
                  while not (success or (not ignore_exc and self.__recv_exc) or monotonic() - start_time >= timeout):
                      success = self.__recv_ready.wait(.25)
  
              # handler either thread's failure
              if not success:
                  logger.warning("AmqpLink Failed to start.  Giving up.")
                  self.stop()
                  if self.__recv_exc:
                      # prioritise receive thread since this can get access-denied whereas send does not (until sending)
                      raise_from(LinkException('Receive thread failure'), self.__recv_exc)
                  elif self.__send_exc:
                      raise_from(LinkException('Send thread failure'), self.__send_exc)
                  else:
                      raise LinkException('Unknown link failure (timeout reached)')
  
          else:
              raise LinkException('amqplink already started')
docs: start connection threads, blocks until started