Описание тега concurrency

В информатике параллелизм - это свойство систем, в которых несколько вычислений могут выполняться в перекрывающиеся периоды времени. Вычисления могут выполняться на нескольких ядрах одного и того же чипа, потоки с предварительным разделением времени на одном и том же процессоре или выполняться на физически разделенных процессорах.

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

Ряд математических моделей были разработан для общего параллельного вычисления, включая сеть Петри, исчисления процессов, в Parallel модели Random Access Machine, в модель Актера и Рео Координационного языке.

вопросы

Поскольку вычисления в параллельной системе могут взаимодействовать друг с другом во время выполнения, количество возможных путей выполнения в системе может быть чрезвычайно большим, а конечный результат может быть неопределенным. Одновременное использование общих ресурсов может быть источником неопределенности, приводящей к таким проблемам, как тупик и голод.

Спектакль

Распространенное заблуждение состоит в том, что увеличение параллелизма всегда улучшает производительность. Хотя он может повысить пропускную способность процессов, связанных с ЦП, за счет использования большего количества ЦП и задач с привязкой к вводу-выводу, уменьшая задержку каждой задачи, во многих ситуациях увеличение параллелизма снижает производительность. Даже когда это улучшает производительность, это может снизить ремонтопригодность.

Примеры того, где параллелизм не помогает

  • Накладные расходы, связанные с использованием нескольких потоков, превышают потенциальное улучшение. например, у вас очень короткая задача, но требуется много времени, чтобы передать ее (и связанные с ней данные) в другой поток.
    • например, стоимость блокировки ресурса превышает время, затрачиваемое на защищенную операцию. Однопоточная задача может работать намного лучше (и быть проще)
  • Вы уже используете общий ресурс в максимальной степени. например, все ваши процессоры, жесткие диски, сетевое соединение полностью загружены. В этом случае накладные расходы могут увеличиваться, снижая общую производительность.
  • Вам не нужно повышать производительность, но добавление параллелизма увеличивает сложность вашего приложения. Общий аргумент: вы должны использовать все свои процессоры, потому что они есть (даже если нечего выиграть и все потерять)

Ссылки