Класс sync_per_thread
Описывает фильтр синхронизации, предоставляющий отдельный объект кэширования для каждого потока.
Синтаксис
template <class Cache>
class sync_per_thread
Параметры
Cache
Тип кэша, связанный с фильтром синхронизации. Он может иметь значение cache_chunklist
, cache_freelist
или cache_suballoc
.
Замечания
Распределители, использующие sync_per_thread
, могут быть равны несмотря на то, что блоки, выделенные в одном потоке, невозможно освободить из другого потока. При использовании одного из этих распределителей блоки памяти, выделенные в одном потоке, не должны быть видимы другим потокам. На практике это означает, что доступ к контейнеру, использующему один из этих распределителей, должен осуществляться только одним потоком.
Функции элементов
Функция-член | Description |
---|---|
allocate | Выделяет блок памяти. |
deallocate | Освобождает указанное число объектов из памяти, начиная с заданной позиции. |
equals | Сравнивает два кэша на равенство. |
Требования
Заголовок:<распределители>
Пространство имен: stdext
sync_per_thread::allocate
Выделяет блок памяти.
void *allocate(std::size_t count);
Параметры
count
Число выделяемых элементов в массиве.
Замечания
Функция-член возвращает результат вызова cache::allocate(count)
в объекте кэша, который относится к текущему потоку. Если объект кэша для текущего потока не выделен, сначала такой объект будет выделен.
sync_per_thread::d eallocate
Освобождает указанное число объектов из памяти, начиная с заданной позиции.
void deallocate(void* ptr, std::size_t count);
Параметры
ptr
Указатель на первый объект, который необходимо освободить из хранилища.
count
Количество объектов для освобождения из хранилища.
Замечания
Функция-член вызывает метод deallocate
в объекте кэша, который относится к текущему потоку. Если объект кэша для текущего потока не выделен, сначала такой объект будет выделен.
sync_per_thread::equals
Сравнивает два кэша на равенство.
bool equals(const sync<Cache>& Other) const;
Параметры
Cache
Объект кэша фильтра синхронизации.
Другое
Объект кэша для сравнения на равенство.
Возвращаемое значение
false
Значение , если для этого объекта не выделен объект кэша или для другого в текущем потоке. В противном случае возвращается результат применения operator==
к двум объектам кэша.