介绍同步筛选器,它使用互斥体来控制对所有分配器共享的缓存对象的访问。
语法
template <class Cache>
class sync_shared
参数
缓存
与同步筛选器相关联的缓存类型。 可以是 cache_chunklist、cache_freelist 或 cache_suballoc。
成员函数
| 成员函数 | 说明 |
|---|---|
| 分配 | 分配内存块。 |
| deallocate | 从指定位置开始从存储中释放指定数量的的对象。 |
| 等于 | 比较两个缓存是否相等。 |
要求
标头:allocators<>
命名空间: stdext
sync_shared::allocate
分配内存块。
void *allocate(std::size_t count);
参数
计数
数组中要分配的元素数目。
返回值
指向已分配对象的指针。
备注
成员函数会锁定互斥体,调用 cache.allocate(count)、解除对互斥体的锁定并返回之前调用 cache.allocate(count) 的结果。
cache 表示当前缓存对象。
sync_shared::d eallocate
从指定位置开始从存储中释放指定数量的的对象。
void deallocate(void* ptr, std::size_t count);
参数
ptr
指向要从存储中释放的第一个对象的指针。
计数
要从存储中释放的对象数量。
备注
此成员函数会锁定互斥体,调用 cache.deallocate(ptr, count)其中 cache 表示缓存对象),然后取消对该互斥体的锁定。
sync_shared::equals
比较两个缓存是否相等。
bool equals(const sync_shared<Cache>& Other) const;
参数
缓存
与同步筛选器相关联的缓存类型。
其他
要比较是否相等的缓存。
返回值
如果 true 的结果为 cache.equals(Other.cache)(其中 cache 表示缓存对象),则为 true;否则为 false。