Русский
Открыть в Telegram

Ветка Похоже в 5.5 externalstring это прям способ сделать деструктор, что может исполняться при emergency gc, а также после вс…

3 сообщения · –
A
Похоже в 5.5 externalstring это прям способ сделать деструктор, что может исполняться при emergency gc, а также после всех userdata при закрытии. Может есть что проще? А то при закрытии можно получиться так, что ссылка есть, а функция __gc уже вызвалась.
  1. U
    Не понял? Я точно уже не помню, но при закрытии стейта вроде и так просто всё собирается, разве нет? (Ну вроде да правда я не помню уже как там emergency gc со всем этим работает... Вроде бы emergency gc финалайзеры и не вызывает, т.к для этого надо объект "воскресить" и ещё на стеке место на его вызов, а в emergency мы могли войти как раз из-за нехватки стека. Собственно ассерты об этом же и говорят...)
  2. U
    Насколько я смутно помню, externalstring "деструктор" он только для освобождения собственно памяти строки, и со стейтом луашным из него взаимодействовать нельзя. Слегка похоже на то, как в luau финалайзеры юзердаты в целом сделаны, но не суть... По сути это более оптимизированная версия на случай, когда надо внешние ресурсы прибить, без оверхеда. Вроде-бы новый лоадер нативных либ так её использует... Хотя канонично это всё делали для переиспользования памяти константных строк между независимыми стейтами, а не вот это всё... К слову большой вопрос стоило-ли оно того, т.к теперь надо по ещё одному указателю прогуляться, чтобы собственно данные строки получить... но да ладно.

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем