原 C 新標準之std thread

2022-03-26 17:34:47 字數 1707 閱讀 3128

總結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是計...