106 lines · 2.6 KB · C++
RawDownload
#include <gtest/gtest.h>#include <string.h>#include <string>#include <list>#include <map> #include "typedefs.h"#include "WelsThreadLib.h"#include "WelsThreadPool.h"#include "WelsTask.h"#include "WelsThreadPoolTest.h" #define  TEST_TASK_NUM  30 uint32_t CSimpleTask::id = 0; WELS_THREAD_ROUTINE_TYPE OneCallingFunc(void *) {  CThreadPoolTest cThreadPoolTest;  CSimpleTask* aTasks[TEST_TASK_NUM];  CWelsThreadPool* pThreadPool = (CWelsThreadPool::AddReference());  if (pThreadPool == NULL)    return 0;   int32_t  i;  for (i = 0; i < TEST_TASK_NUM; i++) {    aTasks[i] = new CSimpleTask (&cThreadPoolTest);  }   for (i = 0; i < TEST_TASK_NUM; i++) {    pThreadPool->QueueTask (aTasks[i]);  }   while (cThreadPoolTest.GetTaskCount() < TEST_TASK_NUM) {    WelsSleep (1);  }   for (i = 0; i < TEST_TASK_NUM; i++) {    delete aTasks[i];  }  pThreadPool->RemoveInstance();   return 0;}  TEST (CThreadPoolTest, CThreadPoolTest) {  OneCallingFunc(NULL);   int iRet = CWelsThreadPool::SetThreadNum (8);  EXPECT_EQ (0, iRet);  EXPECT_FALSE (CWelsThreadPool::IsReferenced());   CWelsThreadPool* pThreadPool = (CWelsThreadPool::AddReference());  ASSERT_TRUE (pThreadPool != NULL);   EXPECT_TRUE (pThreadPool->IsReferenced());   EXPECT_EQ (8, pThreadPool->GetThreadNum());   iRet = CWelsThreadPool::SetThreadNum (4);  EXPECT_TRUE (0 != iRet);  EXPECT_EQ (8, pThreadPool->GetThreadNum());   pThreadPool->RemoveInstance();   iRet = CWelsThreadPool::SetThreadNum (4);  EXPECT_EQ (0, iRet);   pThreadPool = (CWelsThreadPool::AddReference());  EXPECT_TRUE (pThreadPool->IsReferenced());  EXPECT_EQ (4, pThreadPool->GetThreadNum());  pThreadPool->RemoveInstance();   EXPECT_FALSE (CWelsThreadPool::IsReferenced());}  TEST (CThreadPoolTest, CThreadPoolTestMulti) {  int iCallingNum = 10;  WELS_THREAD_HANDLE mThreadID[30];  int i = 0;  WELS_THREAD_ERROR_CODE rc;  for (i = 0; i < iCallingNum; i++) {    rc = WelsThreadCreate (& (mThreadID[i]), OneCallingFunc, NULL, 0);    ASSERT_TRUE (rc == WELS_THREAD_ERROR_OK);    WelsSleep (1);  }  for (i = iCallingNum; i < iCallingNum * 2; i++) {    rc = WelsThreadCreate (& (mThreadID[i]), OneCallingFunc, NULL, 0);    ASSERT_TRUE (rc == WELS_THREAD_ERROR_OK);    WelsSleep (1);    WelsThreadJoin (mThreadID[i]);  }  for (i = 0; i < iCallingNum; i++) {    WelsThreadJoin (mThreadID[i]);  }  for (i = iCallingNum * 2; i < iCallingNum * 3; i++) {    rc = WelsThreadCreate (& (mThreadID[i]), OneCallingFunc, NULL, 0);    ASSERT_TRUE (rc == WELS_THREAD_ERROR_OK);    WelsSleep (1);    WelsThreadJoin (mThreadID[i]);  }   EXPECT_FALSE (CWelsThreadPool::IsReferenced());} 

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