docs: def start(self):
          """schedule to start the greenlet that runs this thread's function
  
          :raises: `RuntimeError` if the thread has already been started
          """
          if self._started:
              raise RuntimeError("thread already started")
  
          def run():
              try:
                  self.run(*self._args, **self._kwargs)
              except SystemExit:
                  # only shut down the thread, not the whole process
                  pass
              finally:
                  self._deactivate()
  
          self._glet = scheduler.greenlet(run)
          self._ident = id(self._glet)
          scheduler.schedule(self._glet)
          self._activate()