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