Skip to content

Commit 37bdcc8

Browse files
Updating event variables while the queue is locked
1 parent 12ec237 commit 37bdcc8

1 file changed

Lines changed: 4 additions & 3 deletions

File tree

Modules/_interpqueuesmodule.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -646,8 +646,8 @@ _queue_add(_queue *queue, int64_t interpid, _PyXIData_t *data, int unboundop)
646646
maxsize = PY_SSIZE_T_MAX;
647647
}
648648
if (queue->items.count >= maxsize) {
649-
_queue_unlock(queue);
650649
queue->space_available = (PyEvent){0};
650+
_queue_unlock(queue);
651651
return ERR_QUEUE_FULL;
652652
}
653653

@@ -666,8 +666,9 @@ _queue_add(_queue *queue, int64_t interpid, _PyXIData_t *data, int unboundop)
666666
}
667667
queue->items.last = item;
668668

669-
_queue_unlock(queue);
670669
queue->has_item = (PyEvent){1};
670+
671+
_queue_unlock(queue);
671672
return 0;
672673
}
673674

@@ -682,8 +683,8 @@ _queue_next(_queue *queue, _PyXIData_t **p_data, int *p_unboundop)
682683
assert(queue->items.count >= 0);
683684
_queueitem *item = queue->items.first;
684685
if (item == NULL) {
685-
_queue_unlock(queue);
686686
queue->has_item = (PyEvent){0};
687+
_queue_unlock(queue);
687688
return ERR_QUEUE_EMPTY;
688689
}
689690
queue->items.first = item->next;

0 commit comments

Comments
 (0)