python2/00181-allow-arbitrary-timeout-in-condition-wait.patch
Bohuslav Kabrda 7b42f48700 Updated to Python 2.7.5.
- Refreshed patches: 0 (config), 102 (lib64), 121 (add Modules to build path),
153 (gdb test noise)
- Dropped patches: 126, 127 (big endian issues, both fixed upstream),
175 (configure -Wformat, fixed upstream)
- Synced patch numbers with python3.spec.
2013-05-16 15:25:31 +02:00

71 lines
2.5 KiB
Diff

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"