Контрольная работа: Атомы

ATOMAddAtom (LPCTSTRlpszStringToStore)

Параметры:

lpszStringToStore– указатель на сохраняемую строку, которая завершается нулевым символом. Максимальная длина строки составляет 255 символов. Если первым символом строки оказывается знак #, а после него следуют цифры, представляющие целое число, меньшее константы MAXINATOM, тогда возвращается целый атом.

Возвращаемое значение. При успешном выполнении – вновь созданный атом. Если указанная строка уже существует в таблице атомов, возвращается тот же самый атом, что и исходная строка; в противном случае – 0.

Для уменьшения счетчика ссылок на атом применяется функция DeteteAtom(). Когда число ссылок достигает нуля, атом из таблицы атомов удаляется. Синтаксис функции DeleteAtom() следующий

ATOMDeleteAtom (ATOMnAtom)

Параметры:

nAtom– атом, который удаляется из локальной таблице атомов. Целые атомы не могут быть удалены, хотя значение NULL возвращается всякий раз, когда они используются в качестве аргументов функции DeleteAtom().

Возвращаемое значение. При успешном выполнении – NULL, в противном случае – значение nAtom.

Функция FindAtom() осуществляет поиск атома, который соответствует заданной строке, в локальной таблице атомов.

Поиск выполняется без учета регистра. Синтаксис функции FindAtom() следующий

ATOMFindAtom (LPCTSTRlpszString)

Параметры:

lpszString– указатель на искомую строку, которая завершается нулевым символом. Если первым символом строки оказывается знак #, а после него следуют цифры, представляющие целое число, меньшее константы MAXINATOM, тогда возвращается синтезированный целочисленный атом с тем же значением.

Возвращаемое значение. При успешном выполнении – 16-разрядное значение локального атома, связанного с указанной строкой; в противном случае – NULL.

Для возврата имени атома из таблицы атомов применяется функция GetAtomName(). При этом имя атома возвращается в том же регистре, в котором оно первоначально сохранялось.

2. Для управления, глобальными таблицами атомов имеется аналогичный набор функций управления атомами.

Например, функция GlobalAddAtom() добавляет атомы в глобальную таблицу атомов подобно тому, как это делает функция AddAtom() по отношению к локальной таблицы атомов.

К другим функциям управления глобальными таблицами атомов относятся GlobalDeleteAtom(), GlobalFindAtom() и GlobalGetAtomName().

И последняя функция управления атомами InitAtomTable() устанавливает количество элементов верхнего уровня в локальной таблице атомов в соответствие с заданным значением.

По умолчанию количество элементов верхнего уровня как в локальной, так и в глобальной таблице атомов равно 37.

Это отнюдь не означает, что в таблице можно разместить только 37 атомов, а скорее отражает тот факт, что вероятность конфликта, а значит, и замедления поиска в таблице, оказывается больше при наличии в таблице 37 элементов, чем, скажем, 80 элементов.

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

Если простое число не используется, тогда вероятность конфликтов возрастет, а значит и замедлится поиск в таблице. Синтаксис функции FindAtom() следующий

BOOLInitAtomTable (DWORDnSize)

Параметры:

nSize– количество элементов верхнего уровня, устанавливаемых в локальной таблице атомов.

Возвращаемое значение. При успешном выполнении – TRUE, в противном случае – FALSE.

Соответствующая функция для установки числа элементов верхнего уровня в глобальных атомных таблицах отсутствует.

Применение глобальных атомов для обмена данными

К-во Просмотров: 316
Бесплатно скачать Контрольная работа: Атомы