sync_per_thread 类
描述为每个线程提供单独的缓存对象的同步筛选器。
语法
template <class Cache>
class sync_per_thread
参数
缓存
与同步筛选器相关联的缓存类型。 可以是 cache_chunklist
、cache_freelist
或 cache_suballoc
。
备注
使用 sync_per_thread
的分配器可比较相等,尽管不能从一个线程释放另一个线程中分配的块。 使用其中一个分配器时,任一线程中的内存块都不应对其他线程可见。 实际上,这意味着单个线程只能访问使用其中一个分配器的容器。
成员函数
成员函数 | 说明 |
---|---|
allocate | 分配内存块。 |
deallocate | 从指定位置开始从存储中释放指定数量的的对象。 |
equals | 比较两个缓存是否相等。 |
要求
标头:<allocators>
命名空间: stdext
sync_per_thread::allocate
分配内存块。
void *allocate(std::size_t count);
参数
count
数组中要分配的元素数目。
备注
在属于当前线程的缓存对象上,成员函数将返回调用 cache::allocate(count)
的结果。 如果没有为当前线程分配任何缓存对象,它首先会分配一个缓存对象。
sync_per_thread::deallocate
从指定位置开始从存储中释放指定数量的的对象。
void deallocate(void* ptr, std::size_t count);
参数
ptr
指向要从存储中释放的第一个对象的指针。
count
要从存储中释放的对象数量。
备注
在属于当前线程的缓存对象上,成员函数调用 deallocate
。 如果没有为当前线程分配任何缓存对象,它首先会分配一个缓存对象。
sync_per_thread::equals
比较两个缓存是否相等。
bool equals(const sync<Cache>& Other) const;
参数
缓存
同步筛选器的缓存对象。
其他
要用于比较是否相等的缓存对象。
返回值
如果没有为该对象或当前线程中的 Other 分配任何缓存对象,则为 false
。 否则,它会返回将 operator==
应用到两个缓存对象的结果。