You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.5 KiB
70 lines
2.5 KiB
diff --git a/Lib/threading.py b/Lib/threading.py |
|
index cb49c4a..c9795a5 100644 |
|
--- a/Lib/threading.py |
|
+++ b/Lib/threading.py |
|
@@ -305,7 +305,7 @@ class _Condition(_Verbose): |
|
else: |
|
return True |
|
|
|
- def wait(self, timeout=None): |
|
+ def wait(self, timeout=None, balancing=True): |
|
"""Wait until notified or until a timeout occurs. |
|
|
|
If the calling thread has not acquired the lock when this method is |
|
@@ -354,7 +354,10 @@ class _Condition(_Verbose): |
|
remaining = endtime - _time() |
|
if remaining <= 0: |
|
break |
|
- delay = min(delay * 2, remaining, .05) |
|
+ if balancing: |
|
+ delay = min(delay * 2, remaining, 0.05) |
|
+ else: |
|
+ delay = remaining |
|
_sleep(delay) |
|
if not gotit: |
|
if __debug__: |
|
@@ -599,7 +602,7 @@ class _Event(_Verbose): |
|
finally: |
|
self.__cond.release() |
|
|
|
- def wait(self, timeout=None): |
|
+ def wait(self, timeout=None, balancing=True): |
|
"""Block until the internal flag is true. |
|
|
|
If the internal flag is true on entry, return immediately. Otherwise, |
|
@@ -617,7 +620,7 @@ class _Event(_Verbose): |
|
self.__cond.acquire() |
|
try: |
|
if not self.__flag: |
|
- self.__cond.wait(timeout) |
|
+ self.__cond.wait(timeout, balancing) |
|
return self.__flag |
|
finally: |
|
self.__cond.release() |
|
@@ -908,7 +911,7 @@ class Thread(_Verbose): |
|
if 'dummy_threading' not in _sys.modules: |
|
raise |
|
|
|
- def join(self, timeout=None): |
|
+ def join(self, timeout=None, balancing=True): |
|
"""Wait until the thread terminates. |
|
|
|
This blocks the calling thread until the thread whose join() method is |
|
@@ -957,7 +960,7 @@ class Thread(_Verbose): |
|
if __debug__: |
|
self._note("%s.join(): timed out", self) |
|
break |
|
- self.__block.wait(delay) |
|
+ self.__block.wait(delay, balancing) |
|
else: |
|
if __debug__: |
|
self._note("%s.join(): thread stopped", self) |
|
@@ -1143,7 +1146,7 @@ class _DummyThread(Thread): |
|
def _set_daemon(self): |
|
return True |
|
|
|
- def join(self, timeout=None): |
|
+ def join(self, timeout=None, balancing=True): |
|
assert False, "cannot join a dummy thread" |
|
|
|
|
|
|