如何使用boost :: filesystem :: directory_iterator作为索引器并行化for循环

时间:2013-01-29 03:11:48

标签: c++ multithreading boost

我目前有以下代码:

using boost::filesystem;

directory_iterator end_iter;
for (directory_iteratory dir_iter("/some/path/"); dir_iter != end_iter; ++dir_iter)
{
    functionCall(some_variable, dir_iter);
}

现在,我想并行化for循环。通常这可以通过openmp轻松完成,但目录迭代器使事情变得复杂。我尝试了以下方法,但这不起作用。

using boost::filesystem;

boost::thread_group threads;

directory_iterator end_iter;
for (directory_iteratory dir_iter("/some/path/"); dir_iter != end_iter; ++dir_iter)
{
    boost::thread *thread = new boost::thread(functionCall, some_variable, dir_iter);
    threads.add(thread);
}

threads.join_all();

所以,这不起作用。什么是正确的方法?

0 个答案:

没有答案