原
總結c++11
thread
更多參考資料
從c++11開始提供了執行緒的支援,終於可以方便的編寫跨平台的執行緒**了。除了std::thread類,還提供了許多其它便利同步的機制,本篇總結是c++11學習筆記系列的首篇總結。
std::thread定義在中,提供了方便的建立執行緒的功能。
class
thread ;
從定義中我們可以得知:
因為thread模擬較簡單,我們通過幾個例子來學習。
#include
void
some_function
(){}
void
some_other_function
(){}
intmain()
#include
#include
#include
void
foo()
intmain()
void
f(int i, std::string
const& s)
; std::thread t
(f, 3
"hello")
; 注意:引數會以預設的方式被複製到內部儲存空間,直到使用的時候才會轉成對應的型別。
下面的例子有問題嗎?有什麼問題?
void
f(int i, std::string
const& s)
; void
oops
(int some_param)
區域性變數buffer
的指標會被傳遞給新執行緒,如果oops()
在buffer
被轉換成string
之前退出,那麼會導致未定義的行為。解決之道是在構造std::thread
的時候傳遞string
變數。std::thread t(f, 3, std::string(buffer));
可以使用std::ref()
來顯示表明要傳遞引用,就像std::bind()
那樣。
std::thread t
(update_data_for_widget, w, std::ref(data));
#include
#include
class
crunner
void
run1
(int a)
{} void
run2
(int a, int b)
const
{} int
run3
(int a, char b, const
std::string& c)
intrun4
(int& a, double b, float c, char d)
static
void
run_static
(int a)
{} };
intmain()
注:
雖然在之前的例子中的函式有返回值,但是我們卻不能獲得,想獲得返回值我們需要使用std::future,關於std::future的總結,後續會慢慢補充,敬請期待。
原 C 新標準之std ratio
原 總結ratio std ratio定義在檔案中,提供了編譯期的比例計算功能。為std chrono duration提供基礎服務。std ratio是乙個模板類,關鍵 摘錄如下 格式有調整 template struct ratio 第乙個引數 nx代表了分子,第二個引數 dx代表了分母。num...
原 C 新標準之std ratio
原 總結ratio std ratio定義在檔案中,提供了編譯期的比例計算功能。為std chrono duration提供基礎服務。std ratio是乙個模板類,關鍵 摘錄如下 格式有調整 template struct ratio 第乙個引數 nx代表了分子,第二個引數 dx代表了分母。num...
C 新標準之std ratio
概覽 std ratio定義在檔案中,提供了編譯期的比例計算功能。為std chrono duration提供基礎服務。類定義std ratio是乙個模板類,關鍵 摘錄如下 格式有調整 template 1 struct ratio 第乙個引數 nx代表了分子,第二個引數 dx代表了分母。num是計...