| 1429 | # when we exit (conform previous semantics). |
| 1430 | |
| 1431 | class _DummyThread(Thread): |
| 1432 | |
| 1433 | def __init__(self): |
| 1434 | Thread.__init__(self, name=_newname("Dummy-%d"), |
| 1435 | daemon=_daemon_threads_allowed()) |
| 1436 | self._started.set() |
| 1437 | self._set_ident() |
| 1438 | self._os_thread_handle = _make_thread_handle(self._ident) |
| 1439 | if _HAVE_THREAD_NATIVE_ID: |
| 1440 | self._set_native_id() |
| 1441 | with _active_limbo_lock: |
| 1442 | _active[self._ident] = self |
| 1443 | _DeleteDummyThreadOnDel(self) |
| 1444 | |
| 1445 | def is_alive(self): |
| 1446 | if not self._os_thread_handle.is_done() and self._started.is_set(): |
| 1447 | return True |
| 1448 | raise RuntimeError("thread is not alive") |
| 1449 | |
| 1450 | def join(self, timeout=None): |
| 1451 | raise RuntimeError("cannot join a dummy thread") |
| 1452 | |
| 1453 | def _after_fork(self, new_ident=None): |
| 1454 | if new_ident is not None: |
| 1455 | self.__class__ = _MainThread |
| 1456 | self._name = 'MainThread' |
| 1457 | self._daemonic = False |
| 1458 | Thread._after_fork(self, new_ident=new_ident) |
| 1459 | |
| 1460 | |
| 1461 | # Global API functions |
no outgoing calls
no test coverage detected
searching dependent graphs…