将成员函数传递给std :: thread

Why*_*ing 16 c++ multithreading c++11

可能重复:
使用成员函数启动线程

我最近一直在使用c ++ 11中的新std :: thread库,我遇到了一个问题.当我尝试将一个类函数传递给一个新线程时,它给了我一个错误(我现在没有确切的错误文本,因为我远离家乡)我有一个像这样的类

class A
{
    void FunctA();
    void FunctB();

    void run()
    {
        std::thread t(FunctA);
        std::thread r(FunctB);
    }
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Gri*_*wes 31

class A
{
    void FunctA();
    void FunctB();

    void run()
    {
        std::thread t(&A::FunctA, this);
        std::thread r(&A::FunctB, this);
    }
};
Run Code Online (Sandbox Code Playgroud)

指向成员函数的指针与指向函数的指针不同,调用它们的语法也不同,并且需要类的实例.您只需将指针传递给实例作为std::thread构造函数的第二个参数.

  • 怎么样他们有args?你会怎么过他们的? (3认同)