Программирование >>  Синтаксис инициирования исключений 

1 ... 56 57 58 [ 59 ] 60 61 62 ... 82


Для такой простой проблемы программа получилась довольно большой. Я не утверждаю, что ваши хлопоты оправдаются во всех проектах. Мое решение в основном предназначено для ситуаций, в которых вы тратите много времени на разработку иерархии классов многократного использования и можете позволить себе потратить время на повышение модульности. Я привел его, поскольку оно соответствует основной идее книги - выжать из С++ все возможное и невозможное и щедро разбросать головоломки, представляющие интерес даже для самых выдающихся экспертов.

Множественная двойная передача

Множественная передача и все ее разновидности тоже имеют свои аналоги в мире невидимых указателей, но я бы не рискнул рекомендовать их для использования в реальных проектах.

Применение невидимых указателей

В оставшихся главах речь пойдет об управлении памятью. Сейчас я забегу вперед и перечислю некоторые стратегии управления памятью, которые упрощаются за счет применения невидимых указателей.

Кэширование

Кэширование уже упоминалось в контексте обычных умных указателей, однако для невидимых указателей оно приобретает дополнительное значение. Невидимый указатель может содержать адрес указываемого объекта на диске и в последнюю секунду перед тем, как передавать полномочия объекту, считывать объект. Все это происходит незаметно для клиента, поэтому со схемой можно экспериментировать, обходясь без изменений больших объемов кода.

Распределенные объекты и посредники

Раз уж мы заговорили об этом, стоит ли ограничиваться диском, если доступны и другие компьютеры? Благодаря невидимым указателям клиент не заботится о том, находится ли объект, к которому он обращается, на том же компьютере или же он затерян в глобальной сети где-то в горах Тибета. Когда невидимый указатель используется для делегирования удаленному объекту, он называется посредником (proxy) для этого объекта.

Нетривиальные распределенные архитектуры

В некоторых распределенных архитектурах посредник должен содержать локальный кэшированный образ удаленного объекта. Это приводит к снижению сетевого трафика для редко изменяемых объектов. В частности, в данной стратегии нередко используется схема с главнгм маркером (master token): чтобы обновить объект, вы должны сначала получить его копию у процесса и компьютера, которым она принадлежит в настоящий момент. Все это может происходить незаметно для клиента, с использование невидимых указателей и различением константных и неконстантных функций.

Невидимые указатели - это замечательная лаборатория, в которой можно поэкспериментировать с различными стратегиями и выяснить, какая из них работает лучше. Методики, в которых реализуются переходные типы, также позволяют оперативно заменять одно представление объекта другим.






Управление памятью

Об управлении памятью и идиомах С++, упрощающих этот процесс, написано на удивление мало - особенно если учесть, сколько сил тратится на такое управление в реальном программировании. Здесь мы займемся этой таинственной темой, начнем с самого простого и перейдем к невероятно сложному. При этом мы будем под разными углами крутить, складывать и расчленять синтаксис С++, чтобы спрятать управление памятью или извлечь из него пользу. Приемы управления памятью вполне могли бы стать темой для отдельной книги. Зажигайте благовония и запевайте мантры!



1 ... 56 57 58 [ 59 ] 60 61 62 ... 82

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика