diff --git a/Python/parking_lot.c b/Python/parking_lot.c index def8236c32b251..6336d1557ad9cf 100644 --- a/Python/parking_lot.c +++ b/Python/parking_lot.c @@ -244,6 +244,7 @@ dequeue(Bucket *bucket, const void *address) if (wait->addr == (uintptr_t)address) { llist_remove(node); --bucket->num_waiters; + wait->is_unparking = true; return wait; } } @@ -262,6 +263,7 @@ dequeue_all(Bucket *bucket, const void *address, struct llist_node *dst) llist_remove(node); llist_insert_tail(dst, node); --bucket->num_waiters; + wait->is_unparking = true; } } } @@ -337,8 +339,6 @@ _PyParkingLot_Unpark(const void *addr, _Py_unpark_fn_t *fn, void *arg) _PyRawMutex_Lock(&bucket->mutex); struct wait_entry *waiter = dequeue(bucket, addr); if (waiter) { - waiter->is_unparking = true; - int has_more_waiters = (bucket->num_waiters > 0); fn(arg, waiter->park_arg, has_more_waiters); } @@ -362,10 +362,6 @@ _PyParkingLot_UnparkAll(const void *addr) _PyRawMutex_Lock(&bucket->mutex); dequeue_all(bucket, addr, &head); - llist_for_each(node, &head) { - struct wait_entry *waiter = llist_data(node, struct wait_entry, node); - waiter->is_unparking = true; - } _PyRawMutex_Unlock(&bucket->mutex); llist_for_each_safe(node, &head) {