|
Программирование >> Синтаксис инициирования исключений
Для такой простой проблемы программа получилась довольно большой. Я не утверждаю, что ваши хлопоты оправдаются во всех проектах. Мое решение в основном предназначено для ситуаций, в которых вы тратите много времени на разработку иерархии классов многократного использования и можете позволить себе потратить время на повышение модульности. Я привел его, поскольку оно соответствует основной идее книги - выжать из С++ все возможное и невозможное и щедро разбросать головоломки, представляющие интерес даже для самых выдающихся экспертов. Множественная двойная передача Множественная передача и все ее разновидности тоже имеют свои аналоги в мире невидимых указателей, но я бы не рискнул рекомендовать их для использования в реальных проектах. Применение невидимых указателей В оставшихся главах речь пойдет об управлении памятью. Сейчас я забегу вперед и перечислю некоторые стратегии управления памятью, которые упрощаются за счет применения невидимых указателей. Кэширование Кэширование уже упоминалось в контексте обычных умных указателей, однако для невидимых указателей оно приобретает дополнительное значение. Невидимый указатель может содержать адрес указываемого объекта на диске и в последнюю секунду перед тем, как передавать полномочия объекту, считывать объект. Все это происходит незаметно для клиента, поэтому со схемой можно экспериментировать, обходясь без изменений больших объемов кода. Распределенные объекты и посредники Раз уж мы заговорили об этом, стоит ли ограничиваться диском, если доступны и другие компьютеры? Благодаря невидимым указателям клиент не заботится о том, находится ли объект, к которому он обращается, на том же компьютере или же он затерян в глобальной сети где-то в горах Тибета. Когда невидимый указатель используется для делегирования удаленному объекту, он называется посредником (proxy) для этого объекта. Нетривиальные распределенные архитектуры В некоторых распределенных архитектурах посредник должен содержать локальный кэшированный образ удаленного объекта. Это приводит к снижению сетевого трафика для редко изменяемых объектов. В частности, в данной стратегии нередко используется схема с главнгм маркером (master token): чтобы обновить объект, вы должны сначала получить его копию у процесса и компьютера, которым она принадлежит в настоящий момент. Все это может происходить незаметно для клиента, с использование невидимых указателей и различением константных и неконстантных функций. Невидимые указатели - это замечательная лаборатория, в которой можно поэкспериментировать с различными стратегиями и выяснить, какая из них работает лучше. Методики, в которых реализуются переходные типы, также позволяют оперативно заменять одно представление объекта другим. Управление памятью Об управлении памятью и идиомах С++, упрощающих этот процесс, написано на удивление мало - особенно если учесть, сколько сил тратится на такое управление в реальном программировании. Здесь мы займемся этой таинственной темой, начнем с самого простого и перейдем к невероятно сложному. При этом мы будем под разными углами крутить, складывать и расчленять синтаксис С++, чтобы спрятать управление памятью или извлечь из него пользу. Приемы управления памятью вполне могли бы стать темой для отдельной книги. Зажигайте благовония и запевайте мантры!
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |