8000 Update locks.py · python/cpython@5f14a7d · GitHub
[go: up one dir, main page]

Skip to content

Commit 5f14a7d

Browse files
committed
Update locks.py
Add comment when testing self._state Change if to while instruction in _block method
1 parent f4bb33a commit 5f14a7d

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

Lib/asyncio/locks.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,7 @@ def __init__(self, parties, action=None, *, loop=mixins._marker):
452452
raise ValueError('parties must be > 0')
453453

454454
self._waiting = Event() # used notify all waiting tasks
455-
self._blocking = Event() # used block tasks while wainting tasks are draining or broken
455+
self._blocking = Event() # used block new tasks while waiting tasks are draining or broken
456456
self._action = action
457457
self._parties = parties
458458
self._state = 0 # 0 filling, 1, draining, -1 resetting, -2 broken
@@ -491,7 +491,7 @@ async def wait(self):
491491
# Block until the barrier is ready for us, or raise an exception
492492
# if it is broken.
493493
async def _block (self):
494-
if self._state in (-1, 1):
494+
while self._state in (-1, 1):
495495
# It is draining or resetting, wait until done
496496
await self._blocking.wait()
497497

@@ -522,17 +522,17 @@ def _release(self):
522522
async def _wait(self):
523523
await self._waiting.wait()
524524
# no timeout so
525-
if self._state < 0:
525+
if self._state < 0: # resetting or broken
526526
raise BrokenBarrierError
527527
assert self._state == 1, repr(self)
528528

529529
# If we are the last tasks to exit the barrier, signal any tasks
530530
# waiting for the barrier to drain.
531531
def _exit(self):
532532
if self._count == 0:
533-
if self._state == 1:
533+
if self._state == 1: # draining
534534
self._state = 0
535-
elif self._state == -1:
535+
elif self._state == -1: # resetting
536536
self._state = 0
537537
self._waiting.clear()
538538
self._blocking.set()
@@ -544,12 +544,12 @@ def reset(self):
544544
raised.
545545
"""
546546
if self._count > 0:
547-
if self._state in (0, 1):
548-
#reset the barrier, waking up tasks
547+
if self._state in (0, 1): # filling or draining
548+
# reset the barrier, waking up tasks
549549
self._state = -1
550550
elif self._state == -2:
551-
#was broken, set it to reset state
552-
#which clears when the last tasks exits
551+
# was broken, set it to reset state
552+
# which clears when the last tasks exits
553553
self._state = -1
554554
self._waiting.set()
555555
self._blocking.clear()

0 commit comments

Comments
 (0)
0