При умирании треду надо сообщить что он умер - например удалить себя из списка работающих тредов. Но только "основной" тред может успеть проверить что тред всё ещё живой, т.к. сделает это в момент до того как у тебя в примере выше сработает with change_lock:
ну да, есть список тредов, из него и удаляем..
зачем основной тред для проверки живого треда? Сам тред легко может решить, надо ему жить или нет.
> Надо хотя бы перепроверить очередь ещё раз после того как ты схватил лок
Не надо. если вдруг пришло куча заданий, то новые треды будут созданы.. Это прям не проблема. Тут можно добавить разные полиси, что тред не надо удалять если был только что создан, проверять время жизни треда и т.д.