Добавление заполнителей std :: bind к аргументам функции - PullRequest
0 голосов
/ 26 марта 2012

Я использую класс 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()
{
    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();
}
...