пятница, 10 июля 2015 г.

Ни о чём. Про AddRef и Release

По мотивам - ToDo. На тему "компиляции словарей"

Пусть есть класс C, который реализует интерфейс I.

И пусть известно, что экземпляры класса C создаются ТОЛЬКО фабрикой F и кешируются в ней по ключу.

Так вот - на модели можно поставить "галку" - "C -  кешируется фабрикой F", и тогда с модели генерируются специальные "пустые" версии AddRef и Release.

Клиенты их зовут, но счётчик ссылок не уменьшается и не увеличивается.

Ибо - незачем.

Объекты и так держатся фабрикой.

Выигрываем на InterlockedIncrement/InterlockedDecrement и прочих "операциях синхронизации".

А если объекты перестали держаться фабрикой  - снимаем галку и у них появляются другие  AddRef/Release. Непустые.

И главное, что всё прозрачно для клиентов.

Как то так...

Только вот Embarcadero с его ARC "в вену" - всю "малину портит".

А зато под Delphi 7 - всё замечательно.

Комментариев нет:

Отправить комментарий