History

change std::list to internal implementation and add the new ut file for CWelsCircleQueue https://rbcommons.com/s/OpenH264/r/1310/

Sijia Chen committed 11 years ago

Commit eb00d5c1 parent 757a5966 files · +235 −18Browse files

Showing the changes to codec/common/src/WelsThreadPool.cpp (1 of 6 files). Show all

Unified · Split

codec/common/src/WelsThreadPool.cpp+11−15
@@ -50,6 +50,7 @@ namespace WelsCommon { · 49 unmodified lines
50 50
51CWelsThreadPool::CWelsThreadPool (IWelsThreadPoolSink* pSink, int32_t iMaxThreadNum) :51CWelsThreadPool::CWelsThreadPool (IWelsThreadPoolSink* pSink, int32_t iMaxThreadNum) :
52 m_pSink (pSink) {52 m_pSink (pSink) {
53 m_cWaitedTasks = new CWelsCircleQueue<IWelsTask>();
53 m_iMaxThreadNum = 0;54 m_iMaxThreadNum = 0;
54 55
55 Init (iMaxThreadNum);56 Init (iMaxThreadNum);
@@ -58,6 +59,8 @@ CWelsThreadPool::CWelsThreadPool (IWelsThreadPoolSink* pSink, int32_t iMaxThread · 2 unmodified lines
58 59
59CWelsThreadPool::~CWelsThreadPool() {60CWelsThreadPool::~CWelsThreadPool() {
60 Uninit();61 Uninit();
62
63 delete m_cWaitedTasks;
61}64}
62 65
63WELS_THREAD_ERROR_CODE CWelsThreadPool::OnTaskStart (CWelsTaskThread* pThread, IWelsTask* pTask) {66WELS_THREAD_ERROR_CODE CWelsThreadPool::OnTaskStart (CWelsTaskThread* pThread, IWelsTask* pTask) {
@@ -239,7 +242,7 @@ WELS_THREAD_ERROR_CODE CWelsThreadPool::RemoveThreadFromBusyMap (CWelsTaskThread · 175 unmodified lines
239void CWelsThreadPool::AddTaskToWaitedList (IWelsTask* pTask) {242void CWelsThreadPool::AddTaskToWaitedList (IWelsTask* pTask) {
240 CWelsAutoLock cLock (m_cLockWaitedTasks);243 CWelsAutoLock cLock (m_cLockWaitedTasks);
241 244
242 m_cWaitedTasks.push_back (pTask);245 m_cWaitedTasks->push_back (pTask);
243 return;246 return;
244}247}
245 248
@@ -267,37 +270,30 @@ int32_t CWelsThreadPool::GetIdleThreadNum() { · 21 unmodified lines
267}270}
268 271
269int32_t CWelsThreadPool::GetWaitedTaskNum() {272int32_t CWelsThreadPool::GetWaitedTaskNum() {
270 return static_cast<int32_t> (m_cWaitedTasks.size());273 return m_cWaitedTasks->size();
271}274}
272 275
273IWelsTask* CWelsThreadPool::GetWaitedTask() {276IWelsTask* CWelsThreadPool::GetWaitedTask() {
274 CWelsAutoLock lock (m_cLockWaitedTasks);277 CWelsAutoLock lock (m_cLockWaitedTasks);
275 278 if (m_cWaitedTasks->size() == 0) {
276 if (m_cWaitedTasks.size() == 0) {
277 return NULL;279 return NULL;
278 }280 }
279 281
280 std::list<IWelsTask*>::iterator it = m_cWaitedTasks.begin();282 IWelsTask* pTask = m_cWaitedTasks->begin();
281 IWelsTask* pTask = *it;
282 283
283 m_cWaitedTasks.pop_front();284 m_cWaitedTasks->pop_front();
284 285
285 return pTask;286 return pTask;
286}287}
287 288
288void CWelsThreadPool::ClearWaitedTasks() {289void CWelsThreadPool::ClearWaitedTasks() {
289 CWelsAutoLock cLock (m_cLockWaitedTasks);290 CWelsAutoLock cLock (m_cLockWaitedTasks);
290
291 std::list<IWelsTask*>::iterator iter = m_cWaitedTasks.begin();
292
293 if (m_pSink) {291 if (m_pSink) {
294 while (iter != m_cWaitedTasks.end()) {292 while (0 != m_cWaitedTasks->size()) {
295 m_pSink->OnTaskCancelled (*iter);293 m_pSink->OnTaskCancelled (m_cWaitedTasks->begin());
296 ++ iter;294 m_cWaitedTasks->pop_front();
297 }295 }
298 }296 }
299
300 m_cWaitedTasks.clear();
301}297}
302 298
303}299}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t