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
10#include "WelsTask.h"10#include "WelsTask.h"
11#include "WelsThreadPoolTest.h"11#include "WelsThreadPoolTest.h"
12 12
13#define TEST_TASK_NUM 2013#define TEST_TASK_NUM 30
14 14
15class CSimpleTask : public IWelsTask {15class CSimpleTask : public IWelsTask {
16 public:16 public:
@@ -36,11 +36,10 @@ class CSimpleTask : public IWelsTask { · 19 unmodified lines
36 36
37uint32_t CSimpleTask::id = 0;37uint32_t CSimpleTask::id = 0;
38 38
39 39void* OneCallingFunc() {
40TEST (CThreadPoolTest, CThreadPoolTest) {
41 CThreadPoolTest cThreadPoolTest;40 CThreadPoolTest cThreadPoolTest;
42 CSimpleTask* aTasks[TEST_TASK_NUM];41 CSimpleTask* aTasks[TEST_TASK_NUM];
43 CWelsThreadPool cThreadPool (&cThreadPoolTest);42 CWelsThreadPool* pThreadPool = & (CWelsThreadPool::AddReference (&cThreadPoolTest));
44 43
45 int32_t i;44 int32_t i;
46 for (i = 0; i < TEST_TASK_NUM; i++) {45 for (i = 0; i < TEST_TASK_NUM; i++) {
@@ -48,7 +47,7 @@ TEST (CThreadPoolTest, CThreadPoolTest) { · 1 unmodified line
48 }47 }
49 48
50 for (i = 0; i < TEST_TASK_NUM; i++) {49 for (i = 0; i < TEST_TASK_NUM; i++) {
51 cThreadPool.QueueTask (aTasks[i]);50 pThreadPool->QueueTask (aTasks[i]);
52 }51 }
53 52
54 while (cThreadPoolTest.GetTaskCount() < TEST_TASK_NUM) {53 while (cThreadPoolTest.GetTaskCount() < TEST_TASK_NUM) {
@@ -58,5 +57,66 @@ TEST (CThreadPoolTest, CThreadPoolTest) { · 3 unmodified lines
58 for (i = 0; i < TEST_TASK_NUM; i++) {57 for (i = 0; i < TEST_TASK_NUM; i++) {
59 delete aTasks[i];58 delete aTasks[i];
60 }59 }
60 pThreadPool->RemoveInstance();
61
62 return 0;
63}
64
65
66TEST (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
94TEST (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());
61}121}
62 122

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