Я работаю над программой, которая обрабатывает много запросов, ни один из которых не достигает более 50% процессорного времени ( в настоящее время я работаю над двухъядерным ). Поэтому я создал поток для каждого запроса, весь процесс проходит быстрее. Обрабатывая 9 запросов, один поток длится 02 мин 08 с, а при одновременной работе 3 потоков время сокращается до 01 мин 37 с, но при этом он не использует 100% ЦП, только около 50%.
Как я могу позволить моей программе использовать все возможности процессоров?
EDIT
Приложение не ограничено вводом-выводом или памятью, оно постоянно находится на разумном уровне.
Я думаю, что это как-то связано с «двойным ядром».
Существует заблокированный вызов метода, который использует каждый запрос, но он действительно быстрый, я не думаю, что это проблема.
Более дорогостоящая часть моего кода - это вызов dll через COM (из всех потоков вызывается один и тот же внешний метод). Эта dll также не ограничена ни памятью, ни вводом-выводом, это компонент распознавания AI, я делаю OCR-распознавание зарплаты, зарплаты для запроса.
EDIT2
Весьма вероятно, что метод STA COM является моей проблемой. Я связался с владельцами компонентов, чтобы решить эту проблему.