如何启动一个std::线程,调用一个期望函数作为参数的函数

How to initiate a std::thread calling a function that expects a function as a parameter?

本文关键字:函数 一个 期望 参数 调用 std 何启动 启动 线程      更新时间:2023-10-16

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

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

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

所以我找到了这样做的方法:

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();
}
相关文章: