怎样利用多线程提高运行速度
我利用两个线程分别读取50幅图像,然后进行处理,可是总的运行时间跟单线程差不多,以前没用过,望大家指导!!
CWinThread *pThread1=AfxBeginThread(ThreadProc1,
NULL,
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED);
CWinThread *pThread2=AfxBeginThread(ThreadProc2,
NULL,
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED);
pThread1->m_bAutoDelete = FALSE;
pThread2->m_bAutoDelete = FALSE;
HANDLE hThread1 = pThread1->m_hThread;
HANDLE hThread2 = pThread2->m_hThread;
pThread1->ResumeThread();
pThread2->ResumeThread();
WaitForSingleObject(hThread1, INFINITE);
WaitForSingleObject(hThread2, INFINITE);
CloseHandle(hThread1);
CloseHandle(hThread2);
//delete pThread1;
pThread1 = NULL;
//delete pThread2;
pThread2 = NULL;
/**下面是显示图像部分**/
显示图像
/**下面是显示图像部分end**/
两个线程函数如下,功能一样
UINT ThreadProc1(LPVOID pParam)
{
//CmyfacematchDlg* pDlg = (CmyfacematchDlg*)pParam;
IplImage * dataBaseImage;
//critical_section.Lock();
for (int count=1;count<=100;count+=2)
{
char img_name[100];
sprintf_s(img_name,"..\\outPut\\%d.jpg",count);
dataBaseImage=cvLoadImage(img_name,0);
/**图像处理函数**/
}
//critical_section.Unlock();
cvReleaseImage(&dataBaseImage);
return 0;
}
UINT ThreadProc2(LPVOID pParam)
{
//CmyfacematchDlg* pDlg = (CmyfacematchDlg*)pParam;
IplImage * dataBaseImage;
//critical_section.Lock();
for (int count=2;count<=100;count+=2)
{
char img_name[100];
sprintf_s(img_name,"..\\outPut\\%d.jpg",count);
dataBaseImage=cvLoadImage(img_name,0);
/**图像处理函数**/
}
//critical_section.Unlock();
cvReleaseImage(&dataBaseImage);
return 0;
}