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)。

猜你喜欢

转载自blog.csdn.net/BJUT_bluecat/article/details/85201576