Microsoft PPL parallel_for_each с расширенной файловой системой directory_iterator - PullRequest
1 голос
/ 07 сентября 2011

с использованием Visual Studio 2010 SP1

, поэтому у меня есть std :: for_each, повторяющийся для большого количества файлов с использованием библиотеки boost :: filesystem.так как эти итерации не связываются друг с другом, я пытался заставить работать многопоточность, поэтому я пытаюсь использовать библиотеку VS 2010 PPL.

old: for_each(directory_iterator(path), directory_iterator(), <lambda function>); new: parallel_for_each(directory_iterator(path), directory_iterator(), <lambda function>);

вещь в том, что parallel_for_each не компилируется, потому что он запрашивает итератор произвольного доступа или итератор прямого доступа, который, как я предполагаю, не равен directory_iterator.Есть ли способ, которым я могу заставить каталог_работник работать в этом случае?может быть, с другим итератором, о котором я не знаю, или, может быть, какой-то тип приведения?

пытался найти ответ в Интернете, но PPL с надписью еще не так много говорили.

спасибозаранее.

1 Ответ

1 голос
/ 07 сентября 2011

Если большая часть вашего времени уходит на загрузку файлов, вы только замедляете себя, пытаясь загрузить несколько файлов. Тем не менее, если ваша работа связана с обработкой, вы можете сделать что-то вроде этого:

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

wait until tasks to complete

Для этого вам понадобится заданий .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...