自己寫的程式,在作業執行緒里,因為處理的資料比較多,該作業執行緒執行下來要兩三秒鐘,太慢了;有人說用并發多執行緒,執行緒池來處理;
但問題是就是不知道該怎么將這個作業執行緒拆分成多個子執行緒來有序穩定的執行,提高速度,請大佬賜教
!最好能詳細說下架構怎么組織
以下是簡化了的代碼:
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]//最后將得到的總資料輸出到串列控制元件顯示;
}
這是網上看到別人的做法,可以選擇開多少個執行緒來運算,不知道是怎么個實作并發多執行緒的;


uj5u.com熱心網友回復:
怕截圖小看不清楚,我又把代碼敲了一遍
uj5u.com熱心網友回復:
要看你具體實作的演算法。才能設計如何拆分作業。相關的論文應該很多,多看看?
uj5u.com熱心網友回復:
可以用任務管理器看程式的cpu占用率,如果占用率低估計就是GetPrivateProfileString太慢了uj5u.com熱心網友回復:
很明顯是慢在IO上,CPU并不是瓶頸,GetPrivateProfileString每次呼叫都要讀硬碟并進行一次線性搜索,如果檔案很大當然慢了,先把檔案讀到記憶體,再在記憶體進行查找。另外INI檔案不是設計用于存盤大量資料的,INI檔案的主要用途是保存配置引數,少量的資訊。
大量的結構化資料最好用XML/SQLITE等存盤,查詢效率也高
uj5u.com熱心網友回復:
學習了
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/33436.html
標籤:進程/線程/DLL
上一篇:新人執行緒問題,求大佬解救
