Для одного из моих проектов, такого как агрегатор контента, я хотел бы представить параллелизм и, если возможно, параллелизм.На первый взгляд это может показаться бессмысленным, поскольку параллелизм и параллелизм используют разные подходы.(Параллелизм через потоки вводит непосредственный параллелизм, где параллелизм предоставляет потенциал).
Итак, чтобы лучше объяснить мою проблему, позвольте мне обобщить мой набор проблем.
Поскольку мой проект является агрегатором контента(который объединяет каналы, подкасты и тому подобное), он в основном считывает данные из Интернета, анализирует их, чтобы получить значимые данные.
Итак, на данный момент я выбрал очень упрощенный последовательный подход.Допустим, у нас есть некоторое количество фидов, которые мы должны проанализировать.
foreach(feed in feeds)
{
read_from_web(feed)
parse(feed)
}
Таким образом, при последовательном подходе время анализа всех фидов и их обработки во многом зависит не только от кода парсера, но и от времени, необходимого для полученияXML-источник из Интернета.Все мы знаем, что может потребоваться переменное время, чтобы прочитать исходный текст из Интернета (из-за сетевых условий и подобных проблем).
Таким образом, чтобы ускорить код, я могу использовать подход рабочих потоков, который представитнемедленный параллелизм;
Таким образом, определенное количество рабочих потоков может одновременно обрабатывать и анализировать подачу (что наверняка ускорит весь процесс - как мы увидим далее)меньшее влияние ожидания данных по сети).
Это нормально, пока моя целевая аудитория проекта не использует многоядерные процессоры - из-за того, что они геймеры --.
Я также хочу использовать эти ядра при обработке контента, поэтому начал читать о потенциальном параллелизме http://oreilly.com/catalog/0790145310262. Я еще не закончил читать его и не знаю, если это ужеобсуждает, но я довольно одержим этим и хотел бы спросить о стековом потоке, чтобы получить общее представление.
Так как книга описывает мощныйПараллелизм ial: потенциальный параллелизм означает, что ваша программа написана так, что она работает быстрее , когда доступно параллельное аппаратное обеспечение и примерно то же самое как эквивалентная последовательная программа когда это не .
Таким образом, реальный вопрос в том, что, хотя я использую рабочие потоки для параллелизма, могу ли я по-прежнему использовать возможный параллелизм?(запускать мои анализаторы каналов в рабочих потоках и по-прежнему распределять их по ядрам процессора - если, конечно, процессор поддерживает многоядерные системы)