С++ - язык, который изучается постепенно.Оптимизация объема
создание сайта визитки
Студия Web-дизайна, создание, раскрутка сайтов интернет реклама, подача объявлений на доски, продвижение и сопровождение сайтов
Карта сайта | Зарабатывайте с нами  | Сделать заказ
Наши услуги
Справочники
Самоучитель Internet Explorer
PHP и MySQL
Компьютерные сети
Самоучитель о С++
Новости
Новости для PDA
Реклама
Студия WebKuban.Ru - Создание и поддержка сайтов, интернет магазинов Каталог сайтов Всего.RU Интернет-каталог WWW.SABRINA.RU Refo.ru - русские сайты Каталог HeadNet.Ru Интернет-магазин цифровых товаров Каталог Ресурсов Интернет
Реклама
Язык С++
По последним данным, на рынке продается по крайней мере 2 768 942 книги о С++, не говоря уже о всевозможных курсах, обучающих программах, журналах и семинарах с коктейлями.
И все же в этом изобилии наблюдается удручающее однообразие.
Добро пожаловать на сайт студии Web-дизайна "САР"


Материалы книги получены с http://www.itlibitum.ru/

Оптимизация объема

Другое решение - реорганизация структур данных для сокращения издержек, связанных с хранением незаблокированных ConstPtr (хотя и ценой некоторой потери скорости). ConstPtr лишь незначительно отличается от указателей только для чтения, которые рассматривались в главе 6 и не имели ничего общего с транзакциями: он имеет ссылку на ConstPtr и функцию Lock(). Мы избавимся от первого и внесем некоторые изменения во второе.

Представьте себе глобальную структуру данных (вероятно, хранящуюся в виде статического члена класса Transaction), в которой находится информация о том, какие Transaction блокируют какие ConstPtr. Для каждой пары в таблице содержится соответствующий LockPtr. Каждый раз, когда вызывается функция Lock() класса ConstPtr, она проверяет, присутствует ли this в таблице. Если присутствует, функция сравнивает транзакцию, переданную в качестве аргумента, с находящейся в таблице. Если ConstPtr не находит себя в таблице, он включает в нее новый триплет (ConstPtr, Transaction, LockPtr), а если находит с другой транзакцией - инициирует исключение.

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

Возможно, у вас возник вопрос - а почему функция Lock() должна оставаться с ConstPtr? Почему ее нельзя включить в другой класс или даже сделать глобальной функцией? Если мы избавимся от переменной LockPtr* и функции Lock(), ConstPtr превратится в самый обычный указатель только для чтения, который на вопрос о транзакциях лишь тупо смотрит на вопрошающего. Впрочем, так ли это? LockPtr по-прежнему приходится объявлять другом; следовательно, хотя бы тривиальных изменений не избежать. Более того, Transaction не знает конкретный тип указываемого объекта и потому не может использовать шаблон LockPtr для создания объекта блокировки. Если вы еще не забыли, абстрактный базовый класс Lock создавался именно для этой цели. Увы. Нам хотелось бы оставить ConstPtr в счастливом неведениино не суждено.


Назад    Содержание    Далее    



Специальное предложение


Сайт визитка за 90 $
создание, разработка сайта
  • Регистрация доменного имени в зоне .net.ru или .pp.ru (1 год)
  • Хостинг (1 год)
  • Готовый дизайн
  • Поддержка РНР
  • 3 страницы сайта (главная, о фирме, контакты)
  • Регистрация в 256 поисковых системах и каталогах
  • Форма сообщений
заказать создание сайта визитки
Размещение объявлений
Недорого предлагаем разослать ваше рекламное предложение о товарах или услугах на сотни досок объявлений по всему Рунету.
размещение объявлений на электронных досках
Друзья сайта
  • Реклама - каталог ресурсов Реклама - каталог ресурсов - Реклама Карта сайта
  • Просто добавь свой сайт
  • Ипотека, коммерческая и загородная недвижимость, продажа квартир и коттеджей
  • Выставки, выставки России, Выставки Москвы, зарубежные выставки
  • Music singer R&B song
  • Язык С++
    Просматривать полку книг о С++ в книжном магазине ничуть не интереснее, чем литературу по бухгалтерии. В сущности, все книги пересказывают одно и то же и отличаются разве что по весу и количеству цветов в диаграммах и таблицах.
    Copyright студия Web-дизайна САР © 2007
    Используются технологии uCoz