Skip to content

Commit d497dee

Browse files
committed
release only if acquired
1 parent 58b137a commit d497dee

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

Lib/multiprocessing/resource_tracker.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,19 @@ def __del__(self):
8484
def _stop(self, use_blocking_lock=True):
8585
if use_blocking_lock:
8686
with self._lock:
87-
self._cleanup()
87+
self._stop_unlocked()
8888
else:
89-
self._lock.acquire(blocking=False)
90-
self._cleanup()
91-
self._lock.release()
92-
93-
def _cleanup(self, close=os.close, waitpid=os.waitpid, waitstatus_to_exitcode=os.waitstatus_to_exitcode):
89+
acquired = self._lock.acquire(blocking=False)
90+
self._stop_unlocked()
91+
if acquired:
92+
self._lock.release()
93+
94+
def _stop_unlocked(
95+
self,
96+
close=os.close,
97+
waitpid=os.waitpid,
98+
waitstatus_to_exitcode=os.waitstatus_to_exitcode,
99+
):
94100
# This shouldn't happen (it might when called by a finalizer)
95101
# so we check for it anyway.
96102
if self._lock._recursion_count() > 1:

0 commit comments

Comments
 (0)