Документация
Знакомство с CntmLib
Общие сведения
Установка и использование
Основные пакеты
Вспомогательные пакеты
Лицензия
Описание классов
|
НАЗНАЧЕНИЕ ПАКЕТА
Данный пакет предоставляет низкоуровневые средства, предназначенные для
выполнения элементарных непрерываемых (atomic) действий, блокировки,
создания и идентификации потоков, для жранения локальных потоковых данных.
ФУНКЦИИ ПАКЕТА
Atomic функции
- Функция устанавливает новое значение, возвращает старое. Операция чтения
старого значения и записи нового выполняется атомарно: template < typename
Type > Type* Cntm::SpecUtils::AtomicSwapPtr(Type**
Variable, Type* NewValue);
- Функция прибавляет к указанной переменной значение 1: void
Cntm::SpecUtils::AtomicIncInt32(int32* v);
- Функция отнимает от указанной переменной значение 1: void
Cntm::SpecUtils::AtomicDecInt32(int32* v);
- Функция отнимает от указанной переменной значение 1. Возвращает true,
если при вычитании текущее значение установилось в 0, иначе - false: int
Cntm::SpecUtils::AtomicDecAndTestInt32(int32* v);
- Функция прибавляет к указанной переменной значение 1. Возвращает true,
если при сложении текущее значение установилось в 0, иначе - false: int
Cntm::SpecUtils::AtomicIncAndTestInt32(int32* v).
Функции ожидания изменения значения переменной
Алгоритм работы у этих функций общий: они в цикле проверяют значение
переменной, и если оно удовлетворяет условию, то выходят. Если нет, то
оставшийся квант времени они отдают другим потокам.
- Функция ожидания момента, когда занчение переменной Variable перестанет
равняться BadValue: template < typename T > void
Cntm::SpecUtils::FastWaitNoEqual(volatile const T* Variable,
T BadValue);
- Функция ожидания момента, когда занчение переменной Variable перестанет
равняться Value. В этот момент она атомарно опять устанавливает Value и
возвращает то значение, которое было до установки Value: template <
typename T > T*
Cntm::SpecUtils::FastWaitPtrNoEqualAndSet(T** Variable, T*
Value);
- Функция ожидания момента, когда занчение переменной Variable станет равной
NeedValue: template < typename T > void
Cntm::SpecUtils::FastWaitEqual(volatile const T* Variable, T
NeedValue);
- Функция ожидания момента, когда занчение атомарной переменной станет
равной NeedValue: void Cntm::SpecUtils::FastWaitEqual(const
AtomicVariable& Variable, AtomicVariable::Type NeedValue).
КЛАССЫ ПАКЕТА
|