Написать пост

Конкурентность и параллелизм — разные вещи

Аватар Евгений Туренко

Не все программисты знают, в чём разница между конкурентностью и параллелизмом. В этой статье мы на простом примере объясним, в чём же она заключается.

Обложка поста Конкурентность и параллелизм — разные вещи

Может показаться, что нет никакой разницы между параллелизмом и конкурентностью, но это потому что вы не вникали в суть дела. Давайте попробуем понять, чем они отличаются.

Конкурентность — это выполнение задач за определённое время (например, есть 5 процессов и все они в сумме выполняются в течение 60 минут по очереди). Важная деталь заключается в том, что задачи необязательно выполняются одновременно, поэтому их можно разделить на более мелкие и чередующиеся.

Конкурентность и параллелизм — разные вещи 1

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

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

Параллелизм — это выполнение задач в одно и то же время (например, есть 5 задач, каждая из них выполняется в течение 60 минут). Само название подразумевает, что они выполняются параллельно.

Конкурентность и параллелизм — разные вещи 2

Вернёмся на кухню: теперь у нас есть два шеф-повара. Один следит за духовкой, а второй нарезает лук. Работа разделена, так как теперь на кухне трудятся два повара.

Параллелизм — подкласс конкурентности: перед выполнением нескольких одновременных задач вам нужно их сначала правильно организовать.

Что ещё можно почитать на эту тему:

  1. Сакральное искусство параллельного и конкурентного программирования.
  2. Параллелизм vs. Конкурентность.
  3. Основные принципы программирования: конкурентность.
Следите за новыми постами
Следите за новыми постами по любимым темам
21К открытий21К показов