Comments 7
Так, например, GOLF игнорирует горутины с финализаторами и очистками, т.к. их срабатывание может привести к непредсказуемым последствиям.
Как по мне - это самая серьезная проблема пропозала.
Сами по себе финализаторы не рекомендованы, однако есть довольно много кейсов когда без значительных изменений в кодовой базе нужно туда затянуть примитив в котором есть ресурсы которые явно надо освобождать, и тут финализаторы служат спасением.
Не скажу что часто с этим сталкивался, но один раз вот реально сильно выручила возможность навесить финализатор. И подозреваю, что кейсов, когда финализатор - меньшее зло - их довольно много.
Ну а очистки ресурсов - это вообще повсеместно. И если все очистки не засунуты в defer (а иногда их туда и не засунуть), то вопрос корректного освобождения ресурсов становится совсем не тривиальным.
Финализаторы не рекомендованы с появляением очисток, тк финализиторы изначально вообще вводились, чтоб иметь возможность корректно вернуть ОС память с выделенную через C.malloc. Но в целом да, вещи ломающий абстракцию гц (финализаторы слабые ссылки, очистик) - рекомендуется использовать редко и только когда действительно в этом есть смысл
Ну и я наверное излишне упростил, по факту горутины с финализаторами- переводятся в состояние deadlock (если недостижимы), но считаются живыми для очистки. Те дедлоклок будет задетекчен, просто в ориганильном GOLF такие не очищаются автоматически
Насколько широко Go используется в крупной торговле в России? Модное веянье или надолго?
В поисках мертвых горутин