python-stdlib/threading: Add Thread.join function.

pull/503/head
Andrew Leech 2022-07-11 11:31:14 +10:00
rodzic 4e7ab4e1e9
commit 8ca3649dcf
1 zmienionych plików z 23 dodań i 1 usunięć

Wyświetl plik

@ -15,12 +15,34 @@ class Thread:
self.args = args
self.daemon = None
self.kwargs = {} if kwargs is None else kwargs
self.ident = None
self._started = False
self._lock = Lock()
self._ret = None
self._ex = None
def start(self):
self._lock.acquire()
_thread.start_new_thread(self.run, ())
self._started = True
def run(self):
self.target(*self.args, **self.kwargs)
self.ident = _thread.get_ident()
try:
self._ret = self.target(*self.args, **self.kwargs)
except Exception as ex:
self._ex = ex
self._lock.release()
def join(self, timeout=None):
if not self._started:
raise RuntimeError("cannot join thread before it is started")
self._lock.acquire(True, timeout)
if self._ex:
raise self._ex
return self._ret
Lock = _thread.allocate_lock