Browse Source

stdpy: recognize daemon=True argument in Thread constructor

rdb 6 years ago
parent
commit
2f31c9ce68
2 changed files with 11 additions and 5 deletions
  1. 5 2
      direct/src/stdpy/threading.py
  2. 6 3
      direct/src/stdpy/threading2.py

+ 5 - 2
direct/src/stdpy/threading.py

@@ -87,7 +87,7 @@ class Thread(ThreadBase):
     object.  The wrapper is designed to emulate Python's own
     object.  The wrapper is designed to emulate Python's own
     threading.Thread object. """
     threading.Thread object. """
 
 
-    def __init__(self, group=None, target=None, name=None, args=(), kwargs={}):
+    def __init__(self, group=None, target=None, name=None, args=(), kwargs={}, daemon=None):
         ThreadBase.__init__(self)
         ThreadBase.__init__(self)
 
 
         assert group is None
         assert group is None
@@ -99,7 +99,10 @@ class Thread(ThreadBase):
             name = _newname()
             name = _newname()
 
 
         current = current_thread()
         current = current_thread()
-        self.__dict__['daemon'] = current.daemon
+        if daemon is not None:
+            self.__dict__['daemon'] = daemon
+        else:
+            self.__dict__['daemon'] = current.daemon
         self.__dict__['name'] = name
         self.__dict__['name'] = name
 
 
         def call_run():
         def call_run():

+ 6 - 3
direct/src/stdpy/threading2.py

@@ -396,7 +396,7 @@ class Thread(_Verbose):
     __exc_info = _sys.exc_info
     __exc_info = _sys.exc_info
 
 
     def __init__(self, group=None, target=None, name=None,
     def __init__(self, group=None, target=None, name=None,
-                 args=(), kwargs=None, verbose=None):
+                 args=(), kwargs=None, verbose=None, daemon=None):
         assert group is None, "group argument must be None for now"
         assert group is None, "group argument must be None for now"
         _Verbose.__init__(self, verbose)
         _Verbose.__init__(self, verbose)
         if kwargs is None:
         if kwargs is None:
@@ -405,7 +405,10 @@ class Thread(_Verbose):
         self.__name = str(name or _newname())
         self.__name = str(name or _newname())
         self.__args = args
         self.__args = args
         self.__kwargs = kwargs
         self.__kwargs = kwargs
-        self.__daemonic = self._set_daemon()
+        if daemon is not None:
+            self.__daemonic = daemon
+        else:
+            self.__daemonic = self._set_daemon()
         self.__started = False
         self.__started = False
         self.__stopped = False
         self.__stopped = False
         self.__block = Condition(Lock())
         self.__block = Condition(Lock())
@@ -670,7 +673,7 @@ class _MainThread(Thread):
 class _DummyThread(Thread):
 class _DummyThread(Thread):
 
 
     def __init__(self):
     def __init__(self):
-        Thread.__init__(self, name=_newname("Dummy-%d"))
+        Thread.__init__(self, name=_newname("Dummy-%d"), daemon=True)
 
 
         # Thread.__block consumes an OS-level locking primitive, which
         # Thread.__block consumes an OS-level locking primitive, which
         # can never be used by a _DummyThread.  Since a _DummyThread
         # can never be used by a _DummyThread.  Since a _DummyThread