如何启动一个std :: thread调用一个函数,该函数需要一个函数作为参数?

时间:2016-07-25 12:42:52

标签: c++ multithreading c++11 stl

我有一个类成员函数,我希望在std :: thread中运行,并且它需要一个函数作为参数,如下所示:

ModbusAgent::poolingThread(int position, std::function<int(int, uint16_t*)> readFunction)

所以问题是:如何实例化一个std :: thread来调用它?

1 个答案:

答案 0 :(得分:-2)

所以这就是我找到的方式:

class A {
public:
    int bar(int, uint16_t*) { return 0; }

    void foo(int position, std::function<int(int, uint16_t*)> readFunction) {
            readFunction(position, nullptr);
    }

    void b() {
        std::function<int(int, uint16_t*)> readFunction = std::bind(&A::bar, *this, std::placeholders::_1, std::placeholders::_2);
        std::thread(&A::foo, this, 5, readFunction);
    }
};


int main() {
    A a;
    a.b();
}