关于c++:C并发编程如何调用类内部函数

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的构造函数即可。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理