#include
#include
#include
#include
#include
using
namespace std;
intgetsum
(vector<
int>
::iterator first,vector<
int>
::iterator last)
static string getcurrenttime()
;strftime
(ch,
sizeof
(ch)-1
,"%y-%m-%d %h:%m:%s"
,localtime
(&t));
return ch;
}int
main()
int res =
getsum
(largearrays.
begin()
,largearrays.
end())
; cout <<
getcurrenttime()
<< endl;
return0;
}
2020-09-22 14:36:36
2020-09-22 14:36:39
編譯輸出計算時間可以看到大概需要3s。
#include
#include
#include
#include
#include
#include
using
namespace std;
//執行緒要做的事情就寫在這個執行緒函式中
void
getsumt
(vector<
int>
::iterator first,vector<
int>
::iterator last,
int&result)
static string getcurrenttime()
;strftime
(ch,
sizeof
(ch)-1
,"%y-%m-%d %h:%m:%s"
,localtime
(&t));
return ch;
}int
main()
//主線程
thread first
(getsumt,largearrays.
begin()
, largearrays.
begin()
+20000000
,std::
ref(result1));
//子執行緒1
thread second
(getsumt,largearrays.
begin()
+20000000
, largearrays.
begin()
+40000000
,std::
ref(result2));
//子執行緒2
thread third
(getsumt,largearrays.
begin()
+40000000
, largearrays.
begin()
+60000000
,std::
ref(result3));
//子執行緒3
thread fouth
(getsumt,largearrays.
begin()
+60000000
, largearrays.
begin()
+80000000
,std::
ref(result4));
//子執行緒4
thread fifth
(getsumt,largearrays.
begin()
+80000000
, largearrays.
end(
),std::
ref(result5));
//子執行緒5
first.
join()
;//主線程要等待子執行緒執行完畢
second.
join()
; third.
join()
; fouth.
join()
; fifth.
join()
;int resultsum = result1+result2+result3+result4+result5;
//彙總各個子執行緒的結果
cout <<
getcurrenttime()
<< endl;
return0;
}
2020-09-22 14:37:02
2020-09-22 14:37:04
大概需要2s時間
兩個程式對比可以看出多執行緒節約時間。很好理解多個cpu同時計算嘛。
火車和火車廂的關係:程序好比火車,火車車廂好比執行緒。
多執行緒程式設計例項
1 建立乙個執行緒用createthread函式 引數1 指向security attribute結構體的乙個指標,再次可以設定為null,預設的安全性 引數2 指定初始提交的棧的大小,以位元組為單位。可以設定為0,使用預設大小。引數3 指向乙個lspthread start routing型別的應...
多執行緒程式設計例項
有四個執行緒1 2 3 4。執行緒 1的功能就是輸出 1,執行緒 2的功能就是輸出 2,以此類推 現在有四個檔案 abcd 初始都為空。現要讓四個檔案呈如下格式 a 1 2 3 4 1 2.b 2 3 4 1 2 3.c 3 4 1 2 3 4.d 4 1 2 3 4 1.程式 include in...
C 多執行緒程式設計簡單例項
using system using system.collections using system.collections.generic using system.threading 在開發中經常會遇到執行緒的例子,如果某個後台操作比較費時間,我們就可以啟動乙個執行緒去執行那個費時的操作,同時程...