Стоп что. Осилил что ли? С какой версии?
5 comments
Вот что мешало хранить в event loop сильные ссылки, а? В конце концов, треды же не завершаются от прихода gc. Ты просто теряешь над ними контроль. Почему гринтреды (aka Task) должны работать по другому? Чтобы все страдали? Существует ровно 0 причин тихо уничтожать таску сборщиком мусора. Если надо её в определенный момент завершить, ну так алло, у вас есть .cancel() в либе и менеджеры контекста в языке Самое смешное, что это даже обратной совместимостью сложно оправдать Более того, если евентлуп станет внезапно хранить сильные ссылки, у тех кто использовали ваш официальный костыль с set() ничего не сломается! Просто костыль станет не нужным, но работать то все продолжит! Я не верю, что кто-то на полном серьезе полагается на то, что gc когда нибудь придет и когда нибудь хз когда без предупреждения прервёт процесс |
А нет, не научился
Important
Save a reference to the result of this function, to avoid a task disappearing mid-execution. The event loop only keeps weak references to tasks. A task that isn’t referenced elsewhere may get garbage collected at any time, even before it’s done. For reliable “fire-and-forget” background tasks, gather them in a collection
Просто у меня на тестах GC видимо не пришёл. Почему он не пришёл, вопрос открытый