void CWelsTaskManageBase::Uninit() { DestroyTasks(); WELS_DELETE_OP (m_pThreadPool); delete m_cTaskList; WelsEventClose (&m_hTaskEvent); }
void CWelsTaskManageBase::DestroyTaskList (TASKLIST_TYPE* pTargetTaskList) { //printf ("CWelsTaskManageBase: pTargetTaskList size=%d m_iTotalTaskNum=%d\n", static_cast<int32_t> (pTargetTaskList->size()), m_iTotalTaskNum); while (NULL != pTargetTaskList->begin()) { CWelsBaseTask* pTask = pTargetTaskList->begin(); WELS_DELETE_OP (pTask); pTargetTaskList->pop_front(); } pTargetTaskList = NULL; }
void CWelsTaskManageBase::Uninit() { DestroyTasks(); WELS_DELETE_OP (m_pThreadPool); for (int32_t iDid = 0; iDid < MAX_DEPENDENCY_LAYER; iDid++) { delete m_cEncodingTaskList[iDid]; delete m_cPreEncodingTaskList[iDid]; } WelsEventClose (&m_hTaskEvent); }
WELS_THREAD_ERROR_CODE CWelsThreadPool::Uninit() { WELS_THREAD_ERROR_CODE iReturn = WELS_THREAD_ERROR_OK; CWelsAutoLock cLock (m_cLockPool); iReturn = StopAllRunning(); if (WELS_THREAD_ERROR_OK != iReturn) { return iReturn; } m_cLockIdleTasks.Lock(); while (m_cIdleThreads->size() > 0) { DestroyThread (m_cIdleThreads->begin()); m_cIdleThreads->pop_front(); } m_cLockIdleTasks.Unlock(); Kill(); WELS_DELETE_OP(m_cWaitedTasks); WELS_DELETE_OP(m_cIdleThreads); WELS_DELETE_OP(m_cBusyThreads); return iReturn; }
void CWelsTaskManageBase::DestroyTasks() { if (m_iTaskNum == 0) return; if (m_cTaskList->size() != m_iTaskNum) { //printf("m_cTaskList %d %d\n", static_cast<int32_t>(m_cTaskList->size()), m_iTaskNum); //WELS_ERROR_TRACE ("CWelsTaskManage::DestroyTasks: Incorrect task numbers"); } while (NULL != m_cTaskList->begin()) { CWelsBaseTask* pTask = m_cTaskList->begin(); WELS_DELETE_OP (pTask); m_cTaskList->pop_front(); } m_iTaskNum = 0; }
void CWelsThreadPool::DestroyThread (CWelsTaskThread* pThread) { pThread->Kill(); WELS_DELETE_OP(pThread); return; }