gpt4 book ai didi

c++ - 带有 boost 文件系统 directory_iterator 的 Microsoft PPL parallel_for_each

转载 作者:太空宇宙 更新时间:2023-11-04 12:16:49 26 4
gpt4 key购买 nike

使用 Visual Studio 2010 SP1

所以我有一个 std::for_each 使用 boost::filesystem 库迭代大量文件。因为这些迭代不会相互混淆,所以我试图让多线程处理它,所以我尝试使用 VS 2010 库 PPL。

旧:for_each(directory_iterator(path), directory_iterator(), <lambda function>);新:parallel_for_each(directory_iterator(path), directory_iterator(), <lambda function>);

问题是,parallel_for_each 无法编译,因为它要求随机访问迭代器或前向访问迭代器,我认为 directory_iterator 不是。有没有办法让 directory_iterator 在这种情况下工作?可能使用我不知道的不同迭代器或某种类型的转换?

尝试在网络上搜索答案,但关于 PPL with boost 的讨论还不是很多。

提前致谢。

最佳答案

如果您的大部分时间都花在加载文件上,那么尝试加载多个文件只会减慢自己的速度。也就是说,如果您的工作受处理限制,您可以这样做:

for each file // serial
{
load file into memory
spawn task to process file // concurrent
}

wait until tasks to complete

为此,您需要使用 tasks .

关于c++ - 带有 boost 文件系统 directory_iterator 的 Microsoft PPL parallel_for_each,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7339390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com