ElementWrapper 为一个 POD 类型数据的包装器,包含 POD 类型的指针对象和此 POD 指针对象对应的析构器,结构体原型如下:
struct ElementWrapper {
///\brief 处理,这里会调用析构器的dispose,一般是做清除工作
bool dispose(TLPDestructionMode mode);
///\brief 释放对POD对象指针的拥有权
void* release();
///\brief 设置POD对象的拥有权,使用默认的析构器SimpleDeleter
template <class Ptr>
void set(Ptr p);
///\brief 设置POD对象指针及相对应的析构器
template <class Ptr, class Deleter>
void set(Ptr p, Deleter d);
///\brief 清除析构器
void cleanup();
void* ptr;
DeleterBase* deleter;
bool ownsDeleter;
};
此结构体是配合 ThreadLocalPtr 而定义的结构体,后续会分析 ThreadLocalPtr 中的实现逻辑