Quicksort函数使用Boost线程

时间:2014-05-06 21:28:51

标签: c++ boost boost-thread

我在使用boost线程库编写并行快速排序时遇到问题。我把它缩小到一段代码,这段代码可以工作但是是串行代码:

void local_quicksort(vector<int>& input)
{
    //Divide vector into equal sized chunks then quicksort the subsections
    for (int i = 0; i < NUM_THREADS; i++)
    {   
        quicksort(input, i * input.size()/NUM_THREADS, (i+1) * input.size()/NUM_THREADS);
    }   
    return;
}

我正在尝试使用此代码段来并行化相同的功能:

void local_quicksort(vector<int>& input)
{
    boost::thread_group bthreads;

    //Divide vector into equal sized chunks for each thread then quicksort the subsections
    for (int i = 0; i < NUM_THREADS; i++)
    {   
        bthreads.create_thread(boost::bind(&quicksort, input, i * input.size()/NUM_THREADS, (i+1) * input.size()/NUM_THREADS));

    }   

    bthreads.join_all();
    return;
}

我无法弄清楚的部分是并行化版本似乎确实在调用quicksort(我在quicksort函数中放了一个print语句,它肯定被调用了)但是实际上没有进行排序(输出)是完全未分类的)。谁能告诉我这里发生了什么?

0 个答案:

没有答案