Параллелизм и конкурентность: в чем разница?

Параллелизм — это когда несколько задач запускаются, выполняются и завершаются друг с другом, чтобы прогрессировать в перекрывающиеся периоды времени, без определенного порядка. Параллелизм — это когда несколько задач ИЛИ несколько частей одной задачи выполняются одновременно в многоядерном процессоре.

Параллелизм и параллелизм: в чем разница?0

Помните, что параллелизм и параллельность — это НЕ одно и то же. Давайте разберемся подробнее, что я имею в виду, когда говорю Параллелизм против Параллелизма.

1. Что такое параллелизм?

Параллелизм по сути применим, когда мы говорим о минимум двух задачах или более. Когда приложение способно выполнять две задачи практически одновременно, мы называем его параллельным приложением. Вот почему параллелизм также называют виртуальным параллелизмом.

Хотя в этом случае задачи выглядят так, как будто они выполняются одновременно, но по сути это МОЖЕТ быть не так. Они используют преимущество функции квантования времени ЦП операционной системы, когда каждая задача выполняет часть своей задачи, а затем переходит в состояние ожидания. Когда первая задача находится в состоянии ожидания, ЦП назначается второй задаче для выполнения ее части задачи.

Операционная система, основанная на приоритете задач, таким образом, назначает процессор и другие вычислительные ресурсы, например, память; по очереди всем задачам и дает им шанс на завершение. Конечному пользователю кажется, что все задачи выполняются параллельно. Это помогает за счет параллелизма быстрее решать несколько задач.

2. Что такое параллелизм?

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

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

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

В одноядерном процессоре мы можем получить параллелизм, но НЕ параллелизм.

3. Различия между параллелизмом и конкурентностью

Теперь давайте перечислим существенные различия между конкурентностью и параллелизмом.

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

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

Вот и все о параллелизме и параллелизме — очень важной концепции многопоточности в Java.

Прокрутить вверх