Как параллельное чтение, обработка, запись шаблона в TBB? - PullRequest
0 голосов
/ 03 мая 2018

Я обрабатываю кучу файлов на диске. Шаблон моей программы подобен чтению файла, обработке данных и записи в другой файл, и снова и снова для всех файлов в каталоге.

В среднем чтение файла занимает около 80 мс, обработка данных - около 700 мс, а запись файла - менее 50 мс. Поэтому я думаю, что если бы я мог непрерывно читать файлы и использовать несколько потоков для их обработки, это сэкономит мне время.

Таким образом, я попытался использовать класс конвейера в TBB для параллелизма моего кода. В основном я создал фильтр чтения и записи для последовательного запуска и фильтр процессов для параллельного запуска. Однако я попытался изменить ntoken и количество потоков, программа работает быстрее, когда я использую только один поток.

Я проверил использование процессора и увидел, что только одно ядро ​​было занято, хотя я использовал несколько потоков. Так может кто-нибудь сказать мне, что происходит не так?

...