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

2021-09-11 02:46:05 字數 1147 閱讀 7618

6k 次閱讀  ·  讀完需要 9 分鐘

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

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

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

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

#include #include void hello() 

int main()

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

#include #include void hello(const char* what) 

int main()

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

#include #include class hello 

};int main()

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

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

#include #include class hello 

private:

// 執行緒函式

void entry(const char* what)

};int main()

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

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

#include #include class counter 

void operator()()

std::cout << std::endl;

}private:

int value_;

};int main() {

std::thread t1(counter(3));

t1.join();

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

c 併發程式設計 一 建立執行緒 這個系列是我近期學習 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...