怎么样才能提高工作线程的执行速度?多线程?线程池?

qq_36086488 2019-02-22 02:43:36
自己写的程序,在工作线程里,因为处理的数据比较多,该工作线程执行下来要两三秒钟,太慢了;有人说用并发多线程,线程池来处理;
但问题是就是不知道该怎么将这个工作线程拆分成多个子线程来有序稳定的执行,提高速度,请大佬赐教!最好能详细说下架构怎么组织

以下是简化了的代码:
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]//最后将得到的总数据输出到列表控件显示;
}

这是网上看到别人的做法,可以选择开多少个线程来运算,不知道是怎么个实现并发多线程的;


...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
学习了
PDD123 2019-05-24
  • 打赏
  • 举报
回复
要看你具体实现的算法。才能设计如何拆分工作。 相关的论文应该很多,多看看?
encoderlee 2019-05-24
  • 打赏
  • 举报
回复
很明显是慢在IO上,CPU并不是瓶颈,GetPrivateProfileString每次调用都要读硬盘并进行一次线性搜索,如果文件很大当然慢了,先把文件读到内存,再在内存进行查找。
另外INI文件不是设计用于存储大量数据的,INI文件的主要用途是保存配置参数,少量的信息。
大量的结构化数据最好用XML/SQLITE等存储,查询效率也高
lan__2019 2019-05-24
  • 打赏
  • 举报
回复
可以用任务管理器看程序的cpu占用率,如果占用率低估计就是GetPrivateProfileString太慢了
qq_36086488 2019-02-22
  • 打赏
  • 举报
回复
怕截图小看不清楚,我又把代码敲了一遍

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧