使用参数调用任务时任务池不工作

问题描述 投票:0回答:1

我正在使用“https://github.com/alugowski/task-thread-pool/”创建线程池并使用提交函数调用任务但出现错误

    int Model::sum(int a, int b)
    {

        return 1;
    }

    void Model::SubscribeMLStatusCallBackFn(const MLStatusReceiveCallbackFn& statusCallback)
    {
        m_MLStatusCallback = statusCallback;
        task_thread_pool::task_thread_pool pool;
        std::future<int> sum_future = pool.submit(&sum, 1, 2);
        sum_future.get();
    }

错误:没有函数模板实例与参数列表匹配,参数类型为:(std::string, CommandLineArgumentTypes)

但是同样的工作

    std::future<int> sum_future = pool.submit([] { return 1; });

有人可以告诉我使用 &sum 函数调用提交时犯了什么错误吗

c++ multithreading threadpool
1个回答
0
投票

您可以尝试调用 sum 方法,同时传递函数和类的实例,并进一步将成员函数绑定到对象。

std::future<int> sum_future = pool.submit(std::bind(&Model::sum, this, 1, 2));
© www.soinside.com 2019 - 2024. All rights reserved.