多執行緒程式設計例項

2021-10-09 16:40:11 字數 2682 閱讀 4900

#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 在開發中經常會遇到執行緒的例子,如果某個後台操作比較費時間,我們就可以啟動乙個執行緒去執行那個費時的操作,同時程...