В чем разница между параллелизмом, параллелизмом и асинхронными методами?

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

каковы различия между этими 3 понятиями?

8 ответов


Concurrent и parallel фактически тот же принцип, что и вы правильно предполагаете, оба связаны с задачами, выполняемыми одновременно, хотя я бы сказал, что параллельные задачи должны быть действительно многозадачными, выполняемыми "одновременно", тогда как concurrent может означать, что задачи разделяют поток выполнения, все еще выполняя параллельно.

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

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

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


редактировать

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


Короче,

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

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

различия между параллелизмом и параллелизм!--12-->

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

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

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

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

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

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

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

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

параллелизм

параллелизм по существу применим, когда мы говорим о минимум двух задачи или больше. Когда приложение возможность выполнения двух задач практически одновременно мы называем это параллельным приложением. Хотя здесь задачи выполняются одновременно, но по существу они могут и не выполняться. Они используют преимущества CPU time-slicing особенность операционной системы где каждая задача выполняет часть своей задачи, а затем переходит в состояние ожидания. Когда первая задача находится в состоянии ожидания, CPU назначается второй задаче завершить это часть задачи.

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

параллельность

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

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

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

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


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

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

enter image description here


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

enter image description here

enter image description here


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


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

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

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

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

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

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

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

наконец, приложение также может быть как параллельным, так и параллельным, поскольку оно одновременно работает над несколькими задачами, а также разбивает каждую задачу на подзадачи для параллельного выполнения. Однако, некоторые из преимущества параллелизма и параллелизма могут быть потеряны в этом сценарии, так как процессоры в компьютере уже достаточно заняты только параллелизмом или параллелизмом. Объединение может привести только к небольшому увеличению производительности или даже потере производительности. Убедитесь, что вы анализируете и измеряете, прежде чем принимать параллельную параллельную модель вслепую. От http://tutorials.jenkov.com/java-concurrency/concurrency-vs-parallelism.html


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


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

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

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

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

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

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

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


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

параллелизм

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

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

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

параллельность

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

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

асинхронные

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

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

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