91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 2KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-13
  • 語言: 其他
  • 標簽:

資源簡介

linux下封裝的線程池類 和 任務基類 根據具體業務繼承任務基類 線程池內使用條件變量來調度任務

資源截圖

代碼片段和文件信息

#include?“threadpool.h“

CTask::~CTask()
{

}

CTask::CTask()
{
m_nDoFlag=1;
}

CThreadPool::CThreadPool(?int?nThreadCount?)
{
m_nThreadCount=nThreadCount;
}

CThreadPool::~CThreadPool()
{
Fini();
}

void?CThreadPool::AddThread(int?nCount)
{

}

int?CThreadPool::Init()
{
pthread_mutex_init(&m_taskMutexNULL);
pthread_mutex_init(&m_taskListMutexNULL);
pthread_mutex_init(&m_threadListMutexNULL);
pthread_cond_init(&m_taskCondNULL);

//?init?thread
for?(int?i=0;i {
CThreadItem*?pItem=new?CThreadItem(ithis);
m_threadList.push_back(pItem);
}
return?0;
}

void?CThreadPool::Fini()
{
list::iterator?itor;
for?(itor=m_threadList.begin();itor!=m_threadList.end();itor++)
{
CThreadItem*?pItem=*itor;
if?(pItem)
{
pItem->SetQuit();
}
}
pthread_cond_broadcast(&m_taskCond);

for?(itor=m_threadList.begin();itor!=m_threadList.end();itor++)
{
CThreadItem*?pItem=*itor;
if?(pItem)
{
delete?pItem;
}
}
pthread_mutex_destroy(&m_taskMutex);
pthread_mutex_destroy(&m_taskListMutex);
pthread_mutex_destroy(&m_threadListMutex);
}

void?CThreadPool::AddTask(?CTask*?pTask?)
{
if?(!pTask)
{
return;
}
pthread_mutex_lock(&m_taskListMutex);

m_taskList.push_back(pTask);

pthread_mutex_unlock(&m_taskListMutex);
pthread_cond_signal(&m_taskCond);
}

CThreadItem::CThreadItem(int?nIDCThreadPool*?pThreadPool?)
{
m_nID=nID;
m_hThreadHandle=0;
m_nThreadFlag=1;
m_pThreadPool=pThreadPool;

//?create?thread

int?nError=pthread_create(&m_hThreadHandleNULLTreatTaskThreadthis);
if?(0!=nError)
{
printf(“create?thread?failed?nid:%d?\n“m_nID);
}
else
{
printf(“create?thread??nid:%d?threadhandle:%lu?\n“m_nIDm_hThreadHandle);
}
}

CThreadItem::~CThreadItem()
{
if?(m_hThreadHandle)
{
m_nThreadFlag=0;
pthread_join(m_hThreadHandleNULL);
printf(“leave?the?thread?nID:?%d?threadhandle?%lu?\n“m_nIDm_hThreadHandle);
m_hThreadHandle=0;
}
}

void?CThreadItem::OnTreatTaskThread()
{
while?(m_nThreadFlag)
{
pthread_mutex_lock(&m_pThreadPool->m_taskMutex);
pthread_cond_wait(&m_pThreadPool->m_taskCond?&m_pThreadPool->m_taskMutex);
pthread_mutex_unlock(&m_pThreadPool->m_taskMutex);

//?get?task?and?do?it
pthread_mutex_lock(&m_pThreadPool->m_taskListMutex);

if?(m_pThreadPool->m_taskList.size()>0)
{
CTask*?pTask=m_pThreadPool->m_taskList.front();
m_pThreadPool->m_taskList.pop_front();
pthread_mutex_unlock(&m_pThreadPool->m_taskListMutex);
if?(pTask)
{
int?nRet=pTask->Do();
printf(“task?being?treated?by?thread?handle?:%lu?\n“m_hThreadHandle);
if?(0==nRet)
{
????delete?pTask;
}
}
}
else
{
pthread_mutex_unlock(&m_pThreadPool->m_taskListMutex);
}
}
}


?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????2878??2014-06-11?20:41??thread\threadpool.cpp

?????文件???????1494??2014-06-11?20:41??thread\threadpool.h

?????目錄??????????0??2014-07-14?13:49??thread

-----------?---------??----------?-----??----

?????????????????4372????????????????????3


評論

共有 條評論

相關資源