Showing the changes to codec/common/src/WelsThreadPool.cpp (1 of 7 files). Show all
Unified · Split
| @@ -47,8 +47,8 @@ int32_t CWelsThreadPool::m_iRefCount = 0; · 46 unmodified lines | ||
| 47 | 47 | CWelsLock CWelsThreadPool::m_cInitLock; |
| 48 | 48 | int32_t CWelsThreadPool::m_iMaxThreadNum = DEFAULT_THREAD_NUM; |
| 49 | 49 | |
| 50 | −CWelsThreadPool::CWelsThreadPool (IWelsThreadPoolSink* pSink) : | |
| 51 | − m_cWaitedTasks (NULL), m_cIdleThreads (NULL), m_cBusyThreads (NULL), m_pSink (pSink) { | |
| 50 | +CWelsThreadPool::CWelsThreadPool() : | |
| 51 | + m_cWaitedTasks (NULL), m_cIdleThreads (NULL), m_cBusyThreads (NULL) { | |
| 52 | 52 | } |
| 53 | 53 | |
| 54 | 54 | |
| @@ -74,15 +74,15 @@ WELS_THREAD_ERROR_CODE CWelsThreadPool::SetThreadNum (int32_t iMaxThreadNum) { · 19 unmodified lines | ||
| 74 | 74 | return WELS_THREAD_ERROR_OK; |
| 75 | 75 | } |
| 76 | 76 | |
| 77 | −CWelsThreadPool& CWelsThreadPool::AddReference (IWelsThreadPoolSink* pSink) { | |
| 77 | + | |
| 78 | +CWelsThreadPool& CWelsThreadPool::AddReference () { | |
| 78 | 79 | CWelsAutoLock cLock (m_cInitLock); |
| 79 | − static CWelsThreadPool m_cThreadPoolSelf (pSink); | |
| 80 | + static CWelsThreadPool m_cThreadPoolSelf; | |
| 80 | 81 | if (m_iRefCount == 0) { |
| 81 | 82 | //TODO: will remove this afterwards |
| 82 | − if (WELS_THREAD_ERROR_OK != m_cThreadPoolSelf.Init(pSink)) { | |
| 83 | + if (WELS_THREAD_ERROR_OK != m_cThreadPoolSelf.Init()) { | |
| 83 | 84 | m_cThreadPoolSelf.Uninit(); |
| 84 | 85 | } |
| 85 | − m_cThreadPoolSelf.UpdateSink (pSink); | |
| 86 | 86 | } |
| 87 | 87 | |
| 88 | 88 | //fprintf(stdout, "m_iRefCount=%d, pSink=%x, iMaxThreadNum=%d\n", m_iRefCount, pSink, iMaxThreadNum); |
| @@ -98,23 +98,17 @@ void CWelsThreadPool::RemoveInstance() { · 9 unmodified lines | ||
| 98 | 98 | -- m_iRefCount; |
| 99 | 99 | if (0 == m_iRefCount) { |
| 100 | 100 | StopAllRunning(); |
| 101 | − m_pSink = NULL; | |
| 102 | 101 | Uninit(); |
| 103 | 102 | //fprintf(stdout, "m_iRefCount=%d, IdleThreadNum=%d, BusyThreadNum=%d, WaitedTask=%d\n", m_iRefCount, GetIdleThreadNum(), GetBusyThreadNum(), GetWaitedTaskNum()); |
| 104 | 103 | } |
| 105 | 104 | } |
| 106 | 105 | |
| 106 | + | |
| 107 | 107 | bool CWelsThreadPool::IsReferenced() { |
| 108 | 108 | CWelsAutoLock cLock (m_cInitLock); |
| 109 | 109 | return (m_iRefCount>0); |
| 110 | 110 | } |
| 111 | 111 | |
| 112 | −void CWelsThreadPool::UpdateSink (IWelsThreadPoolSink* pSink) { | |
| 113 | − m_pSink = pSink; | |
| 114 | − //fprintf(stdout, "UpdateSink: m_pSink=%x\n", m_pSink); | |
| 115 | − //fprintf(stdout, "m_iRefCount=%d, IdleThreadNum=%d, BusyThreadNum=%d, WaitedTask=%d\n", m_iRefCount, GetIdleThreadNum(), GetBusyThreadNum(), GetWaitedTaskNum()); | |
| 116 | −} | |
| 117 | − | |
| 118 | 112 | |
| 119 | 113 | WELS_THREAD_ERROR_CODE CWelsThreadPool::OnTaskStart (CWelsTaskThread* pThread, IWelsTask* pTask) { |
| 120 | 114 | AddThreadToBusyList (pThread); |
| @@ -143,7 +137,7 @@ WELS_THREAD_ERROR_CODE CWelsThreadPool::OnTaskStop (CWelsTaskThread* pThread, IW · 22 unmodified lines | ||
| 143 | 137 | return WELS_THREAD_ERROR_OK; |
| 144 | 138 | } |
| 145 | 139 | |
| 146 | −WELS_THREAD_ERROR_CODE CWelsThreadPool::Init (IWelsThreadPoolSink* pSink) { | |
| 140 | +WELS_THREAD_ERROR_CODE CWelsThreadPool::Init () { | |
| 147 | 141 | //fprintf(stdout, "Enter WelsThreadPool Init\n"); |
| 148 | 142 | |
| 149 | 143 | CWelsAutoLock cLock (m_cLockPool); |
| @@ -341,12 +335,13 @@ IWelsTask* CWelsThreadPool::GetWaitedTask() { · 191 unmodified lines | ||
| 341 | 335 | |
| 342 | 336 | void CWelsThreadPool::ClearWaitedTasks() { |
| 343 | 337 | CWelsAutoLock cLock (m_cLockWaitedTasks); |
| 344 | − | |
| 345 | − if (m_pSink) { | |
| 346 | − while (0 != m_cWaitedTasks->size()) { | |
| 347 | − m_pSink->OnTaskCancelled (m_cWaitedTasks->begin()); | |
| 348 | − m_cWaitedTasks->pop_front(); | |
| 338 | + IWelsTask* pTask = NULL; | |
| 339 | + while (0 != m_cWaitedTasks->size()) { | |
| 340 | + pTask = m_cWaitedTasks->begin(); | |
| 341 | + if (pTask->GetSink()) { | |
| 342 | + pTask->GetSink()->OnTaskCancelled(); | |
| 349 | 343 | } |
| 344 | + m_cWaitedTasks->pop_front(); | |
| 350 | 345 | } |
| 351 | 346 | } |
| 352 | 347 | |