C 併發程式設計(一) 建立執行緒

2021-10-21 12:05:38 字數 1808 閱讀 9216

c++ 併發程式設計(一):建立執行緒

這個系列是我近期學習 c++ 併發程式設計的總結,文章和**最初都是基於 boost.thread,但是最近越來越發現,stl 內建的執行緒和同步工具已經足夠完善了。

stl 和 boost 執行緒,在設計和用法上極其相似,一旦掌握了乙個,不難切換到另乙個。如果非要比較的話,boost 更完善一些,比如 boost 提供了 thread_group 和 upgrade_lock,stl 則沒有。

此節介紹「執行緒的建立」。

hello 1

通過乙個不帶引數的函式建立執行緒。

#include

#include

void

hello()

intmain

(int argc,

char

*ar**)

輸出結果為:

hello, world!
hello 2

通過乙個帶引數的函式建立執行緒。

#include

#include

void

hello

(const

char

*what)

intmain

(int argc,

char

*ar**)

輸出結果為:

hello, world!

hello, world!

hello, world!

hello, world!

hello 3

通過乙個函式物件——即仿函式(functor)——建立執行緒。

#include

#include

class

hello};

intmain

(int argc,

char

*ar**)

輸出結果為:

hello, world!

hello, world!

hello, world!

hello, world!

hello 4

通過乙個成員函式建立執行緒。

與前例不同之處在於,需要以 bind 繫結 this 指標作為第乙個引數。

#include

#include

class

hello

private

:// 執行緒函式

void

entry

(const

char

*what)};

intmain

(int argc,

char

*ar**)

counter

建立兩個執行緒,各自倒著計數。

此例順帶演示了 detached 執行緒,被 detached 的執行緒,自生自滅,不受控制,無法再 join。

#include

#include

class

counter

void

operator()

()std::cout << std::endl;

}private

:int value_;};

intmain()

輸出結果為:

321

321

C 併發程式設計(一) 建立執行緒

6k 次閱讀 讀完需要 9 分鐘 這個系列是我近期學習 c 併發程式設計的總結,文章和 最初都是基於 boost.thread,但是最近越來越發現,stl 內建的執行緒和同步工具已經足夠完善了。stl 和 boost 執行緒,在設計和用法上極其相似,一旦掌握了乙個,不難切換到另乙個。如果非要比較的話...

多執行緒併發程式設計(一)

在解決多執行緒併發帶來的效能問題時,我們首先想到的一定是執行緒池。但配置執行緒池的幾個關鍵引數時,必須基於生產環境系統資源以及線上流量,設定合理的引數值。執行緒數量設定太小,會導致程式不能充分地利用系統資源 執行緒數量設定太大,又可能帶來資源的過度競爭,導致上下文切換造成額外的系統效能開銷。尤其執行...

c 11多執行緒併發程式設計學習 5 建立多執行緒

一.建立多個執行緒 1 include2 include3 include4 include5 using namespace std 6 7 void fun int i 執行緒執行函式 8 20 21 等待所有子執行緒結束,使用迭代器很方便 22 for auto iter threads.be...