std bind與std thread學習筆記

2021-10-08 13:27:21 字數 1027 閱讀 4343

std::bind

1、bind函式,如果在建立std::bind將引數設定為具體變數,則在執行該bind函式時,這個引數的值就為設定時變數的值。並不會因為在呼叫bind的函式之前,使用的變數發生改變,而使用改變後的值。(bind的那些不是佔位符的引數被拷貝到bind返回的可呼叫物件中)

2、bind函式,如果在建立std::bind將引數設定為placeholders,則在執行該bind函式時,需要有具體的值傳入其中,在執行該函式就使用該值。另外,該條與上一條可以結合使用。

3、bind函式,如果在建立std::bind時,使用類中的非靜態函式,需要取函式的位址,並且傳入第乙個引數為類的物件指標。

std::thread

1、thread物件,如果使用沒有執行函式的建構函式建立的物件,該執行緒沒有執行緒id

2、thread物件,可以使用lambda函式建立,

3、thread物件,可以通過std::move進行賦值,將建立的區域性物件賦值給全域性物件進行儲存

class clambdafuncinthread

; clambdafuncinthread(const clambdafuncinthread &) = delete;

~clambdafuncinthread()

}void printdefaultthreadid()

void start()

});m_tobj = std::move(t);

std::cout << "after move, m_tobj: " << m_tobj.get_id() << std::endl;

};void stop()

private:

std::thread m_tobj;

public:

int m_count;

bool m_bthreadrunning;

};int _tmain(int argc, _tchar* ar**)

std bind 詳解及引數解析

bind std function.cpp 定義控制台應用程式的入口點。include stdafx.h include include include include 學習bind的用法 void f int n1,int n2,int n3,const int n4,int n5 int g i...

std bind 詳解及引數解析

bind std function.cpp 定義控制台應用程式的入口點。include stdafx.h include include include include 學習bind的用法 void f int n1,int n2,int n3,const int n4,int n5 int g i...

當std bind遇到非靜態類成員函式

之前看專案 在實現表驅動方法時,經常會遇到這樣的 enum std map foo m void foo func0 void foo func1 void foo func2 void foo init 時間長了以後,我一度認為std bind的第乙個引數是乙個非靜態類成員函式時,第二個引數只能是...