自己写的程序,在工作线程里,因为处理的数据比较多,该工作线程执行下来要两三秒钟,太慢了;有人说用并发多线程,线程池来处理;
但问题是就是不知道该怎么将这个工作线程拆分成多个子线程来有序稳定的执行,提高速度,请大佬赐教
!最好能详细说下架构怎么组织
以下是简化了的代码:
UINT CMeasureDlg::AutoMeasureThread(LPVOID pPAR) //工作线程
{
for(int i = 0;i < 5;i++)//i为需要的数据数目;***********
{
switch (i)
{
//读出第一条线的参数;
case 0: GetPrivateProfileString(_T("Line1-1"),_T("num_measures_1-1"),_T("50"),str.GetBuffer(255),255,PathStr);
m_Num_Measures_1 = _ttoi(str);
GetPrivateProfileString(_T("Line1-1"),_T("measure_length1_1-1"),_T("30"),str.GetBuffer(255),255,PathStr);
m_Measure_Length1_1 = _ttoi(str);
break;
//读出第2条线参数;
case 1: GetPrivateProfileString(_T("Line1-1"),_T("num_measures_1-1"),_T("50"),str.GetBuffer(255),255,PathStr);
m_Num_Measures_1 = _ttoi(str);
GetPrivateProfileString(_T("Line1-1"),_T("measure_length1_1-1"),_T("30"),str.GetBuffer(255),255,PathStr);
m_Measure_Length1_1 = _ttoi(str);
break;
//读出第3条线参数;
case 2: GetPrivateProfileString(_T("Line1-1"),_T("num_measures_1-1"),_T("50"),str.GetBuffer(255),255,PathStr);
m_Num_Measures_1 = _ttoi(str);
GetPrivateProfileString(_T("Line1-1"),_T("measure_length1_1-1"),_T("30"),str.GetBuffer(255),255,PathStr);
m_Measure_Length1_1 = _ttoi(str);
break;
case 3:
break;
//读出第5条线参数;
case 4:GetPrivateProfileString(_T("Line1-1"),_T("num_measures_1-1"),_T("50"),str.GetBuffer(255),255,PathStr);
m_Num_Measures_1 = _ttoi(str);
GetPrivateProfileString(_T("Line1-1"),_T("measure_length1_1-1"),_T("30"),str.GetBuffer(255),255,PathStr);
m_Measure_Length1_1 = _ttoi(str);
break;
default:
break;
}
int data = Function(m_Num_Measures_1,m_Measure_Length1_1)//将参数依此代入函数
Data_SUM[i] = data; //将数据合并一起;
}
Data_SUM[i]//最后将得到的总数据输出到列表控件显示;
}
这是网上看到别人的做法,可以选择开多少个线程来运算,不知道是怎么个实现并发多线程的;