mirror of
				https://github.com/python/cpython.git
				synced 2025-11-01 06:01:29 +00:00 
			
		
		
		
	gh-109955 : Update state transition comments for asyncio.Task (#109910)
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									32466c97c0
								
							
						
					
					
						commit
						45cf5b0c69
					
				
					 1 changed files with 16 additions and 6 deletions
				
			
		|  | @ -73,15 +73,25 @@ class Task(futures._PyFuture):  # Inherit Python Task implementation | |||
|     """A coroutine wrapped in a Future.""" | ||||
| 
 | ||||
|     # An important invariant maintained while a Task not done: | ||||
|     # _fut_waiter is either None or a Future.  The Future | ||||
|     # can be either done() or not done(). | ||||
|     # The task can be in any of 3 states: | ||||
|     # | ||||
|     # - Either _fut_waiter is None, and _step() is scheduled; | ||||
|     # - or _fut_waiter is some Future, and _step() is *not* scheduled. | ||||
|     # - 1: _fut_waiter is not None and not _fut_waiter.done(): | ||||
|     #      __step() is *not* scheduled and the Task is waiting for _fut_waiter. | ||||
|     # - 2: (_fut_waiter is None or _fut_waiter.done()) and __step() is scheduled: | ||||
|     #       the Task is waiting for __step() to be executed. | ||||
|     # - 3:  _fut_waiter is None and __step() is *not* scheduled: | ||||
|     #       the Task is currently executing (in __step()). | ||||
|     # | ||||
|     # The only transition from the latter to the former is through | ||||
|     # _wakeup().  When _fut_waiter is not None, one of its callbacks | ||||
|     # must be _wakeup(). | ||||
|     # * In state 1, one of the callbacks of __fut_waiter must be __wakeup(). | ||||
|     # * The transition from 1 to 2 happens when _fut_waiter becomes done(), | ||||
|     #   as it schedules __wakeup() to be called (which calls __step() so | ||||
|     #   we way that __step() is scheduled). | ||||
|     # * It transitions from 2 to 3 when __step() is executed, and it clears | ||||
|     #   _fut_waiter to None. | ||||
| 
 | ||||
|     # If False, don't log a message if the task is destroyed whereas its | ||||
|     # If False, don't log a message if the task is destroyed while its | ||||
|     # status is still pending | ||||
|     _log_destroy_pending = True | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Kristján Valur Jónsson
						Kristján Valur Jónsson