C++ 向函数参数添加std::bind占位符

C++ 向函数参数添加std::bind占位符,c++,multithreading,sorting,std,packaged-task,C++,Multithreading,Sorting,Std,Packaged Task,我使用一个Merge类来封装合并排序。我想使用打包任务对递归调用进行多线程处理: void Merge::executeSort() { packaged_task<void(Merge)> mergeLeft(bind(Merge::executeSort, _1)); packaged_task<void(Merge)> mergeRight(bind(Merge::executeSort, _1)); auto f1 = mergeLeft.

我使用一个Merge类来封装合并排序。我想使用打包任务对递归调用进行多线程处理:

void Merge::executeSort()
{
    packaged_task<void(Merge)> mergeLeft(bind(Merge::executeSort, _1));
    packaged_task<void(Merge)> mergeRight(bind(Merge::executeSort, _1));
    auto f1 = mergeLeft.get_future();
    auto f2 = mergeRight.get_future();
    mergeLeft(Merge(arrayBegin, arrayMiddle()));
    mergeRight(Merge(arrayMiddle(), arrayEnd));
    f1.get();
    f2.get();
    merge();
}
void Merge::executeSort()
{
打包的任务mergeLeft(绑定(Merge::executeSort,_1));
打包的任务合并权限(bind(Merge::executeSort,_1));
自动f1=mergeLeft.get_future();
自动f2=mergeRight.get_future();
mergeLeft(Merge(arrayBegin,arrayMiddle());
mergeRight(Merge(arrayMiddle(),arrayEnd));
f1.get();
f2.get();
合并();
}
我只是想知道我是否可以像这样绑定打包的任务:

void Merge::executeSort()
{
    packaged_task<void(int*, int*)> mergeLeft(bind(Merge::executeSort, Merge(_1, _2)));
    packaged_task<void(int*, int*)> mergeRight(bind(Merge::executeSort, Merge(_1, _2)));
    auto f1 = mergeLeft.get_future();
    auto f2 = mergeRight.get_future();
    mergeLeft(arrayBegin, arrayMiddle());
    mergeRight(arrayMiddle(), arrayEnd);
    f1.get();
    g2.get();
    merge();
}
void Merge::executeSort()
{
打包的任务mergeLeft(绑定(Merge::executeSort,Merge(_1,_2));
打包的任务合并权限(bind(Merge::executeSort,Merge(_1,_2));
自动f1=mergeLeft.get_future();
自动f2=mergeRight.get_future();
合并左(arrayBegin,arrayMiddle());
合并权限(arrayMiddle(),arrayEnd);
f1.get();
g2.get();
合并();
}

您尝试时发生了什么?不清楚您到底想做什么。我希望函数使用两个参数对范围进行排序,而executeSort不使用参数。调用bind时,需要识别函数、对象和参数。此代码中没有多线程,调用
打包的_任务
不会在单独的线程中运行。