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

Passing member functions to std::thread

本文关键字:std thread 成员 函数      更新时间:2023-10-16

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

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

class A
{
    void FunctA();
    void FunctB();
    void run()
    {
        std::thread t(FunctA);
        std::thread r(FunctB);
    }
}

我做错了什么?

class A
{
    void FunctA();
    void FunctB();
    void run()
    {
        std::thread t(&A::FunctA, this);
        std::thread r(&A::FunctB, this);
    }
};
指向成员函数的指针

不同于指向函数的指针,调用它们的语法也不同,并且需要类的实例。您可以将指向实例的指针作为构造函数的第二个参数传递std::thread

我认为

,问题是您无法以类似于函数的方式获取指向成员函数的指针。在这里,您将找到有关此内容的更多信息。

此外,如果您提供了编译器错误文本,则回答起来会容易得多。