History

put CWelsThreadPool to singleTon for future usage (including add sink for IWelsTask)

sijchen committed 10 years ago

Commit d4f09d91 parent 52d25f510 files · +273 −85Browse files

Showing the changes to test/common/WelsThreadPoolTest.cpp (1 of 10 files). Show all

Unified · Split

test/common/WelsThreadPoolTest.cpp+65−5
@@ -10,7 +10,7 @@ · 9 unmodified lines
1010 #include "WelsTask.h"
1111 #include "WelsThreadPoolTest.h"
1212
13−#define TEST_TASK_NUM 20
13+#define TEST_TASK_NUM 30
1414
1515 class CSimpleTask : public IWelsTask {
1616 public:
@@ -36,11 +36,10 @@ class CSimpleTask : public IWelsTask { · 19 unmodified lines
3636
3737 uint32_t CSimpleTask::id = 0;
3838
39−
40−TEST (CThreadPoolTest, CThreadPoolTest) {
39+void* OneCallingFunc() {
4140 CThreadPoolTest cThreadPoolTest;
4241 CSimpleTask* aTasks[TEST_TASK_NUM];
43− CWelsThreadPool cThreadPool (&cThreadPoolTest);
42+ CWelsThreadPool* pThreadPool = & (CWelsThreadPool::AddReference (&cThreadPoolTest));
4443
4544 int32_t i;
4645 for (i = 0; i < TEST_TASK_NUM; i++) {
@@ -48,7 +47,7 @@ TEST (CThreadPoolTest, CThreadPoolTest) { · 1 unmodified line
4847 }
4948
5049 for (i = 0; i < TEST_TASK_NUM; i++) {
51− cThreadPool.QueueTask (aTasks[i]);
50+ pThreadPool->QueueTask (aTasks[i]);
5251 }
5352
5453 while (cThreadPoolTest.GetTaskCount() < TEST_TASK_NUM) {
@@ -58,5 +57,66 @@ TEST (CThreadPoolTest, CThreadPoolTest) { · 3 unmodified lines
5857 for (i = 0; i < TEST_TASK_NUM; i++) {
5958 delete aTasks[i];
6059 }
60+ pThreadPool->RemoveInstance();
61+
62+ return 0;
63+}
64+
65+
66+TEST (CThreadPoolTest, CThreadPoolTest) {
67+ OneCallingFunc();
68+
69+ int iRet = CWelsThreadPool::SetThreadNum (8);
70+ EXPECT_EQ (0, iRet);
71+ EXPECT_FALSE (CWelsThreadPool::IsReferenced());
72+
73+ CWelsThreadPool* pThreadPool = & (CWelsThreadPool::AddReference (NULL));
74+ EXPECT_TRUE(pThreadPool->IsReferenced());
75+ EXPECT_EQ (8, pThreadPool->GetThreadNum());
76+
77+ iRet = CWelsThreadPool::SetThreadNum (4);
78+ EXPECT_TRUE (0 != iRet);
79+ EXPECT_EQ (8, pThreadPool->GetThreadNum());
80+
81+ pThreadPool->RemoveInstance();
82+
83+ iRet = CWelsThreadPool::SetThreadNum (4);
84+ EXPECT_EQ (0, iRet);
85+ pThreadPool = & (CWelsThreadPool::AddReference (NULL));
86+ EXPECT_TRUE (pThreadPool->IsReferenced());
87+ EXPECT_EQ (4, pThreadPool->GetThreadNum());
88+ pThreadPool->RemoveInstance();
89+
90+ EXPECT_FALSE (CWelsThreadPool::IsReferenced());
91+}
92+
93+
94+TEST (CThreadPoolTest, CThreadPoolTestMulti) {
95+ int iCallingNum = 10;
96+ WELS_THREAD_HANDLE mThreadID[30];
97+ int i = 0;
98+
99+ for (i = 0; i < iCallingNum; i++) {
100+ WelsThreadCreate (& (mThreadID[i]), (LPWELS_THREAD_ROUTINE)OneCallingFunc, NULL, 0);
101+ WelsSleep (1);
102+ }
103+
104+ for (i = iCallingNum; i < iCallingNum * 2; i++) {
105+ WelsThreadCreate (& (mThreadID[i]), (LPWELS_THREAD_ROUTINE)OneCallingFunc, NULL, 0);
106+ WelsSleep (1);
107+ WelsThreadJoin (mThreadID[i]);
108+ }
109+
110+ for (i = 0; i < iCallingNum; i++) {
111+ WelsThreadJoin (mThreadID[i]);
112+ }
113+
114+ for (i = iCallingNum * 2; i < iCallingNum * 3; i++) {
115+ WelsThreadCreate (& (mThreadID[i]), (LPWELS_THREAD_ROUTINE)OneCallingFunc, NULL, 0);
116+ WelsSleep (1);
117+ WelsThreadJoin (mThreadID[i]);
118+ }
119+
120+ EXPECT_FALSE (CWelsThreadPool::IsReferenced());
61121 }
62122

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