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

31次阅读

共计 513 个字符,预计需要花费 2 分钟才能阅读完成。

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

正文完
 0