| 202 | } |
| 203 | |
| 204 | WELS_THREAD_ERROR_CODE CWelsThreadPool::Uninit() { |
| 205 | WELS_THREAD_ERROR_CODE iReturn = WELS_THREAD_ERROR_OK; |
| 206 | CWelsAutoLock cLock (m_cLockPool); |
| 207 | |
| 208 | iReturn = StopAllRunning(); |
| 209 | if (WELS_THREAD_ERROR_OK != iReturn) { |
| 210 | return iReturn; |
| 211 | } |
| 212 | |
| 213 | m_cLockIdleTasks.Lock(); |
| 214 | while (m_cIdleThreads->size() > 0) { |
| 215 | DestroyThread (m_cIdleThreads->begin()); |
| 216 | m_cIdleThreads->pop_front(); |
| 217 | } |
| 218 | m_cLockIdleTasks.Unlock(); |
| 219 | |
| 220 | Kill(); |
| 221 | |
| 222 | WELS_DELETE_OP (m_cWaitedTasks); |
| 223 | WELS_DELETE_OP (m_cIdleThreads); |
| 224 | WELS_DELETE_OP (m_cBusyThreads); |
| 225 | |
| 226 | return iReturn; |
| 227 | } |
| 228 | |
| 229 | void CWelsThreadPool::ExecuteTask() { |
| 230 | //fprintf(stdout, "ThreadPool: scheduled tasks: ExecuteTask\n"); |