Мое многопоточное приложение принимает некоторые файлы из HD и затем обрабатывает данные в этих файлах. Я повторно использую тот же экземпляр класса (dataProcessing)) для создания потоков (я просто изменяю параметры вызывающего метода).Многопоточное приложение не достигает 100% использования процессора
processingThread [i] = new Thread (новый ThreadStart (dataProcessing.parseAll));
Мне интересно, может ли причиной быть все чтения потоков из одной и той же памяти.
Для обработки каждого файла требуется около полуминутки. Файлы быстро читаются, так как они всего 200 КБ. После обработки файлов я пишу все результаты в одном файле назначения. Я не думаю, что проблема заключается в чтении или записи на диск. Все потоки работают над задачей, но по какой-то причине процессор не используется полностью. Я пытаюсь добавить больше потоков, чтобы узнать, могу ли я достичь 100% использования процессора, но он доходит до точки, где он замедляется и уменьшает использование обработки, а не полностью ее использует. У кого-нибудь есть идея, что может быть неправильным?
Как насчет этого процесса заставляет думать, что узкие места являются процессором? – yamen
Ну, когда я отлаживал приложение, я вижу, что все потоки «что-то делают». Фактически, я получаю некоторое время, используя больше потоков, но если я добавлю слишком много, производительность снижается. – Devela
Я думаю, нужна дополнительная информация. Все эти задачи записываются в тот же файл, что может быть узким местом. 30 секунд для обработки 200 Кбайт данных предлагает нечто иное, чем связанные с CPU процессы ... – yamen