1. 程式人生 > >c++用類成員函式作為執行緒函式

c++用類成員函式作為執行緒函式

參考:https://www.cnblogs.com/rangozhang/p/4468754.html

https://blog.csdn.net/YuHengZuo/article/details/78565723

當我們建立執行緒的時候 執行緒處理函式如果是類裡面的成員函式會報錯,需要以下處理。

當需要利用類成員函式( MyClass::thread_func )來建立子執行緒時,需如下碼碼:

t[i] = thread(std::mem_fn(&MyClass::thread_func), Object, args..);    

如果thread_func為static,則不用寫object。否則需要,如主程序所調函式也為該類成員,則傳入this指回自己。

menfn這個相當於STL中內建的仿函式,可以使用調取STL容器內物件的內建函式;
mem_fn最為人所熟知的作用是,將一個成員函式作用在一個容器上,就像這樣std::for_each(v.begin(), v.end(), boost::mem_fn(&Shape::draw))就可以讓容器vector中的每一個元素都執行一遍draw方法。
第二個用法是,它可以幫助把一個函式指標模擬得像一個函式實體(function object)。