*/
class ThreadData
{
public:
/**
* @brief 构造
*/
ThreadData(){};
/**
* @brief 析够
*/
virtual ~ThreadData(){};
/**
* @brief 生成数据.
*
* @ param T
* @return ThreadData*
*/
template<typename T>
static T* makeThreadData()
{
return new T;
}
};
/**
* @brief 设置线程数据.
*
* @param p 线程数据
*/
static void setThreadData(ThreadData *p);
/**
* @brief 获取线程数据.
*
* @return ThreadData* 线程数据
*/
static ThreadData* getThreadData();
/**
* @brief 设置线程数据, key需要自己维护.
*
* @param pkey 线程私有数据key
* @param p 线程指针
*/
static void setThreadData(pthread_key_t pkey, ThreadData *p);
/**
* @brief 获取线程数据, key需要自己维护.
*
* @param pkey 线程私有数据key
* @return 指向线程的ThreadData*指针
*/
static ThreadData* getThreadData(pthread_key_t pkey);
protected:
/**
* @brief 释放资源.
*
* @param p
*/
static void destructor(void *p);
/**
* @brief 初始化key
*/
class KeyInitialize
{
public:
/**
* @brief 初始化key
*/
KeyInitialize()
{
int ret = pthread_key_create(&TC_ThreadPool::g_key, TC_ThreadPool::destructor);
if(ret != 0)