C11之后,C++引入了多线程规范库thread
,这里间接说如何在一个类的成员函数中应用多线程调用起他成员函数的问题。间接上答案。
#include <iostream>#include <thread>using namespace std;class ThreadInClass { public: void threadFun() { cout << "I am a method of ThreadInClass from thread : ." << this_thread::get_id() << endl; } void invokeThreadFun() { thread call(&ThreadInClass::threadFun, ref(*this)); call.join(); }};int main() { ThreadInClass threadClass; threadClass.invokeThreadFun(); return 0;}
以上代码中定义了一个ThreadInClass
的类,其有两个函数,一个是用来在新的线程中执行的threadFun
,一个是在主线程调用的invokeThreadFun
,应用是只须要把this
指针转换为援用传递给thread
的构造函数即可。