Оберон-клуб «ВЄДАsoft»
https://zx.oberon2.ru/forum/

Слабые указатели
https://zx.oberon2.ru/forum/viewtopic.php?f=46&t=356
Страница 3 из 4

Автор:  vlad [ 29 янв 2018, 20:21 ]
Заголовок сообщения:  Re: Слабые указатели

budden писал(а):
Для файлов же есть Close. В чём разница?


Формально - ни в чем. Но на практике у тебя открытых файлов гуляющих по системе (т.е. не scoped открыл/прочитал/записал/закрыл) будет сильно меньше, чем COM-объектов при тесной интеграции с каким-нибудь Word'ом.
Кроме того, да, файлы в ББ закрываются в финалайзере - обсуждали как-то эту тему на oberoncore.

Короче, общее решение для языков с GC - финалайзер.

Автор:  budden [ 30 янв 2018, 09:25 ]
Заголовок сообщения:  Re: Слабые указатели

> Короче, общее решение для языков с GC - финалайзер.
Ладно, спорить не буду, но я с этим никогда не соглашусь. Это - не решение, а "как бы решение". У меня есть опыт генерации отчётов из Delphi в Excel, и мне бы и в голову не пришло допустить, чтобы файл закрывался "когда получится". У меня бы такую программу просто не приняли в эксплуатацию.

Автор:  geniepro [ 30 янв 2018, 17:10 ]
Заголовок сообщения:  Re: Слабые указатели

Финализаторы вызываются, когда заканчивается область действия того блока, что использует ресурс с этим финализатором. В случае с файлом на том же сишарпе финализатор автоматом вызывается в конце блока using, где открывается этот файл, в комон лиспе -- там где заканчивается блок "(with-file ...)" или как оно там у вас выглядит в лиспе. В дельфях вроде нет же никаких финализаторов? Давно на нём не работал, не помню уже...

Автор:  vlad [ 30 янв 2018, 18:13 ]
Заголовок сообщения:  Re: Слабые указатели

geniepro писал(а):
Финализаторы вызываются, когда заканчивается область действия того блока


Речь идет исключительно о случае, когда у тебя нет "блока". С блоком все понятно - Close/Release и все.

Автор:  budden [ 30 янв 2018, 21:54 ]
Заголовок сообщения:  Re: Слабые указатели

Кто-то из нас явно запутался. Финализаторы - это вот что. В лиспе - то же самое. Думаю, что и Вирт имел в виду именно это, но я тут пока не оберонщик :)

То, что вызывается при выходе из блока - это closeable

Автор:  vlad [ 30 янв 2018, 21:59 ]
Заголовок сообщения:  Re: Слабые указатели

budden писал(а):
Кто-то из нас явно запутался. Финализаторы - это вот что.


Лично я говорю про них :) Кстати, в виртовском обероне никаких финализаторов я не видел. Это расширение ББ. Че там с файлами в оберон-ОС и как их закрывают - пусть кто-нибудь из знатоков выступит.

Автор:  geniepro [ 31 янв 2018, 17:29 ]
Заголовок сообщения:  Re: Слабые указатели

budden писал(а):
Кто-то из нас явно запутался. Финализаторы - это вот что. В лиспе - то же самое. Думаю, что и Вирт имел в виду именно это, но я тут пока не оберонщик :)

То, что вызывается при выходе из блока - это closeable

Я имел в виде дотнетный IDisposable, или явовский try-with-resources

Автор:  vlad [ 31 янв 2018, 17:33 ]
Заголовок сообщения:  Re: Слабые указатели

geniepro писал(а):
Я имел в виде дотнетный IDisposable, или явовский try-with-resources


Тема началась с того, насколько правильно использовать финалайзеры/финализаторы для поддержки COM в BB. IDisposable/closable из другой оперы.

Автор:  geniepro [ 31 янв 2018, 17:34 ]
Заголовок сообщения:  Re: Слабые указатели

Википедия по другому описывает [url=https://ru.wikipedia.org/wiki/Финализатор]финализаторы[/url]. Ну ок, может я неправильно вашу тему тут понял. Я имел в виду, оказывается, "шаблон проектирования «dispose»"

Автор:  vlad [ 31 янв 2018, 17:39 ]
Заголовок сообщения:  Re: Слабые указатели

geniepro писал(а):
Википедия по другому описывает [url=https://ru.wikipedia.org/wiki/Финализатор]финализаторы[/url]. Ну ок, может я неправильно вашу тему тут понял. Я имел в виду, оказывается, "шаблон проектирования «dispose»"


Википедия все правильно описывает, это ты читать не умеешь :)
Цитата:
Для освобождения ресурсов в языках со сборкой мусора используется шаблон проектирования «dispose».


Эта фраза отсылает к альтернативе, когда финализаторы работают плохо.

Страница 3 из 4 Часовой пояс: UTC + 2 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/