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...