Проблема в том, что ваш цикл отмены перекрывается с вашим get()
циклом, который блокирует. Я думаю, вы хотите иметь 2 петли, не так ли? Один цикл, который отменяет четные задания, а затем второй цикл, который проверяет, какие из них отменены, а какие нет, а затем get()
соответственно.
То, как это написано прямо сейчас, еще до того, как цикл успел отменить workres[2]
, он проверил и запросил get()
из workres[1]
.
Так что я думаю, что вам нужно 3 этапа:
1. The `submit()` loop
2. The selective `cancel()` loop
3. The selective `get()` loop (which blocks)