В чем разница между параллелизмом, параллелизмом и асинхронными методами? - PullRequest
125 голосов
/ 30 января 2011

Параллелизм - это выполнение двух задач параллельно в разных потоках.Однако асинхронные методы выполняются параллельно, но в одном потоке.Как это достигается?А как насчет параллелизма?

В чем различия между этими тремя понятиями?

Ответы [ 10 ]

104 голосов
/ 30 января 2011

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

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

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

С точки зрения пользователя это выглядит как многозадачность, но может и не быть.


EDIT

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

68 голосов
/ 13 апреля 2016

Короче говоря,

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

Помните, что параллелизм и параллелизм - это не одно и то же.

Различия между параллелизмом и параллелизмом

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

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

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

Параллельность - это работа с множеством вещей водин раз.Параллелизм - это одновременное выполнение множества задач.

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

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

Приложение не может быть параллельным- не одновременно, что означает, что оно обрабатывает все задачи по одной, последовательно.

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

Параллелизм

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

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

Параллелизм

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

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

Асинхронные методы

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

36 голосов
/ 30 января 2018

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

Параллелизм - это когда эти задачи выполняются параллельно.

enter image description here


Асинхронность является отдельным понятием (хотя и связано в некоторых контекстах). Это относится к тому факту, что одно событие может происходить в другое время (не синхронно) с другим событием. Приведенные ниже диаграммы иллюстрируют разницу между синхронным и асинхронным выполнением, когда участники могут соответствовать различным потокам, процессам или даже серверам.

enter image description here

enter image description here

13 голосов
/ 14 марта 2014

У всех возникают проблемы с ассоциированием асинхронности с параллелизмом или параллелизмом, поскольку асинхронность не является антонимом ни параллельному, ни параллельному. Это антоним Синхронный. Который просто указывает, будет ли что-то, в этом случае потоки, синхронизироваться с чем-то другим, в этом случае с другим потоком.

2 голосов
/ 06 августа 2017

параллелизм

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

параллелизм

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

Параллелизм против параллелизма в деталях

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

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

Как видите, приложение может быть параллельным, но не параллельным. Это означает, что он обрабатывает более одной задачи одновременно, но задачи не разбиты на подзадачи.

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

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

Наконец, приложение также может быть как параллельным, так и параллельным, поскольку оно одновременно работает над несколькими задачами и разбивает каждую задачу на подзадачи для параллельного выполнения. Однако некоторые преимущества параллелизма и параллелизма могут быть потеряны в этом сценарии, поскольку процессоры в компьютере уже достаточно заняты только параллелизмом или параллелизмом. Сочетание этого может привести только к небольшому приросту производительности или даже к потере производительности. Убедитесь, что вы анализируете и измеряете, прежде чем слепо принять параллельную параллельную модель.

С http://tutorials.jenkov.com/java-concurrency/concurrency-vs-parallelism.html

0 голосов
/ 03 марта 2019

Здесь нужно прояснить немного семантики:

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

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

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

Следовательно, асинхронная процедура или операция может обрабатываться параллельно или одновременно с другими.

0 голосов
/ 18 декабря 2018

Существует несколько сценариев, в которых может происходить параллелизм:

Асинхронность - Это означает, что ваша программа выполняет неблокирующие операции. Например, он может инициировать запрос на удаленный ресурс через HTTP, а затем продолжить выполнение какой-то другой задачи, ожидая ответа. Это похоже на то, когда вы отправляете электронное письмо, а затем продолжаете свою жизнь, не дожидаясь ответа.

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

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

0 голосов
/ 25 сентября 2018

Здесь я объясню с некоторыми примерами

Параллелизм

A веб-сервис получает много небольших запросов в режиме реального времени, и он должен обрабатыватькаждый из этих запросов различен и не зависит от других запросов.

  • многие задачи выполняются
  • в в режиме реального времени
  • с различными последовательностями выполнения (может быть несколько задач или одна задача может выполняться по-разному в каждом вызове)

  • существенно уменьшает время отклика

Параллелизм

A Графический процессор использует параллельную обработку для обработки того же блока кода (AKA kernel ) на тысячах физических и логических потоков.Каждый вызов ядра иногда использует отдельный блок памяти для своих операций чтения / записи.В идеале процесс начинается и заканчивается для всех потоков одновременно.Одно ядро ​​ЦП без гиперпоточности не может выполнять параллельную обработку.

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

Асинхронный

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

  • одна задача или пакет задач выполняется в другом потоке
  • одноразово или по одному
  • последовательность выполнения не имеет значения / применяется, потому что нет параллелизма
  • существенно снижает скорость, но обеспечивает отзывчивость к другому потоку

Примечание: асинхроннооперация, которая выполняется одновременно (т.е. более одного раза за раз), является одновременной операцией.

0 голосов
/ 22 августа 2018

Параллельный: Это широкий термин, который означает, что два фрагмента кода выполняют это «одновременно» до такой степени, что параллельное выполнение становится «реальным».Звучит расплывчато и упрощенно?Да.Я пытаюсь помочь вам сосредоточиться на различиях между этими концепциями, а не на предоставлении каждого отдельного технического определения.

Так что я написал "реальный", потому что параллелизм можно смоделировать в определенной степени.Многие системы, например игры, реализуют «параллельные» подсистемы, которые выполняют много задач во время каждого цикла выполнения (например: некоторые из них широко используют агенты), но в большинстве случаев они только параллельны в том смысле, что оникаждый делает свою маленькую вещь в не предсказуемом порядке, доступ к данным кажется случайным, и даже если вы внедрили какую-то примитивную программную кооперативную многозадачность для организации всего этого, все равно это не так. действительно параллельно.Это просто очень сложная последовательная система.

Можно сказать, что параллелизм становится реальным, когда существует сторонняя система (будь то базовая упреждающая ОС, предлагающая потоки или ядра ЦП), специально предназначенная для запуска кода в черных ящикахчто вы не можете контролировать (за исключением времени, в которое они запускаются, и результата, который они производят, плюс любой мьютекс или семафоры, которые вы можете добавить)

Одновременно: не может бытьпараллелизм без параллелизма (будь то симуляция или реальная, как я объяснил выше), но этот термин специально фокусируется на том факте, что две системы будут пытаться получить доступ к одному и тому же ресурсу в какой-то момент одновременно.Это подчеркивает тот факт, что вам придется иметь дело с этим.

Асинхронный : все правы, говоря, что асинхронный не связан с параллелизмом, но он прокладывает путьк нему (бремя на вас делать вещи параллельно или нет - продолжайте читать).

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

Но это все еще только синтаксис (обычно он представляется как методы обратного вызова).За кулисами базовая система может просто решить, что эти так называемые «задачи» - это просто фрагменты кода, которые накапливаются до тех пор, пока не завершит код, который в настоящее время выполняется.И затем он складывает их один за другим и выполняет их последовательно.Или нет.Это может также создать поток для каждой задачи и запустить их параллельно.Какая разница?Эта часть не входит в концепцию;)

0 голосов
/ 30 мая 2017

ВАЛЮТА ПРОТИВ ПАРАЛЛЕЛИЗМА: параллелизм в один момент времени может быть выполнена только одна задача. пример: процессор с одним процессором Параллелизм в какой-то момент мы можем сделать несколько задач. пример: двухъядерный или многоядерный процессор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...