В чем разница между параллелизмом, параллелизмом и асинхронными методами?
параллелизм имеет две задачи, выполняемые параллельно в отдельных потоках. Однако асинхронные методы выполняются параллельно, но в одном и том же потоке 1. Как это достигается? А как насчет параллелизма?
каковы различия между этими 3 понятиями?
8 ответов:
параллельные и параллельные фактически являются тем же принципом, что и вы правильно предполагаете, оба связаны с задачами, выполняемыми одновременно, хотя я бы сказал, что параллельные задачи должны быть действительно многозадачными, выполняемыми "в то же время", тогда как параллельные могут означать, что задачи разделяют поток выполнения, все еще выполняя параллельно.
асинхронные методы напрямую не связаны с предыдущими двумя понятиями, асинхронность используется для представьте впечатление параллельной или параллельной задачи, но фактически асинхронный вызов метода обычно используется для процесса, который должен работать вдали от текущего приложения, и мы не хотим ждать и блокировать наше приложение в ожидании ответа.
например, получение данных из базы данных может занять некоторое время, но мы не хотим блокировать наш интерфейс, жду данные. Вызов asynch принимает ссылку обратного вызова и возвращает выполнение обратно в код, как только запрос был размещен в удаленной системе. Ваш пользовательский интерфейс может продолжать отвечать пользователю, пока удаленная система выполняет любую обработку, как только она возвращает данные в ваш метод обратного вызова, тогда этот метод может обновить пользовательский интерфейс (или передать это обновление) по мере необходимости.
с точки зрения пользователя это похоже на многозадачность, но это может быть и не так.
EDIT
наверное стоит добавить, что во многих реализациях асинхронный метод вызовет поток будет закручивать, но это не важно, это действительно зависит от выполняемой операции и как ответ может быть уведомлен обратно в систему.
Короче,
параллелизм означает несколько задач, которые запускаются, запускаются и завершаются в перекрывающихся периодах времени, без определенного порядка. Параллелизм - это когда несколько задач или несколько частей уникальной задачи буквально выполняются одновременно, например, на многоядерном процессоре.
помните, что параллелизм и параллелизм-это не одно и то же.
различия между параллелизмом и параллелизм
теперь давайте перечислим замечательные различия между параллелизмом и параллелизмом.
параллелизм-это когда две задачи могут запускаться, выполняться и завершаться в перекрывающиеся периоды времени. Параллелизм - это когда задачи буквально выполняются одновременно, например. на многоядерном процессоре.
параллелизм-это состав независимо выполняющихся процессов, в то время как параллелизм-это одновременное выполнение (возможно, связанных) вычисления.
параллелизм заключается в том, чтобы иметь дело с множеством вещей сразу. Параллелизм заключается в том, чтобы делать много вещей одновременно.
приложение может быть параллельным – но не параллельным, что означает, что оно обрабатывает более одной задачи одновременно, но не две задачи выполняются одновременно.
приложение может быть параллельным, но не параллельным, что означает, что оно обрабатывает несколько подзадач задачи в многоядерном процессоре одновременно время.
приложение не может быть ни параллельным, ни параллельным, что означает, что оно обрабатывает все задачи по одному, последовательно.
приложение может быть как параллельным, так и параллельным, что означает, что оно одновременно обрабатывает несколько задач в многоядерном процессоре одновременно.
параллелизм
параллелизм по существу применим, когда мы говорим о минимум двух задачи или больше. Когда приложение способен выполнять две задачи практически в то же время, мы называем его одновременное применение. Хотя и здесь задачи выполняются как бы одновременно, но по существу они могут и не выполняться. Они используют в своих интересах функцию сокращения времени процессора операционной системы где каждая задача выполняет часть своей задачи, а затем переходит в состояние ожидания. Когда первая задача находится в состоянии ожидания, ЦП назначается второй задаче завершить это часть задачи.
операционная система на основе приоритета задач, таким образом, назначает процессор и другие вычислительные ресурсы, например память; по очереди для всех задач и дайте им шанс завершить. Конечному пользователю кажется, что все задачи работает параллельно. Это называется параллелизмом.
параллельность
параллелизм не требует наличия двух задач. Это буквально физически выполнить часть задачи или нескольких задач, в то же время использование многоядерной инфраструктуры ЦП, назначая по одному ядру каждому задача или подзадача.
параллелизм требует оборудования с несколькими процессорами, по существу. В одноядерном процессоре вы можете получить параллелизм, но не параллелизм.
асинхронные методы
Это не связано с параллелизмом и параллелизмом, используется асинхронность чтобы представить впечатление параллельной или параллельной задачи, но фактически асинхронный вызов метода обычно используется для процесса это нужно сделать работать вдали от текущего приложения, и мы не хотите подождать и заблокировать наше приложение в ожидании ответа.
параллелизм когда выполнение нескольких задач одновременно, а не каждая задача выполняется последовательно друг за другом.
параллельность это когда некоторые задачи действительно выполняются параллельно.
асинхронность это отдельная концепция (хотя и связанная в некоторых контекстах). Это относится к тому факту, что одно событие может происходить в другое время (не синхронно) для другого события. Приведенные ниже диаграммы иллюстрируют, в чем разница между синхронным и асинхронным исполнением, где акторы могут соответствовать различным потокам, процессам или даже серверам.
У всех возникают проблемы с Ассоциацией асинхронного с параллелизмом или параллелизмом, потому что асинхронный не является антонимом параллельного или параллельного. Это антоним синхронного. Что просто указывает, если что-то, в этом случае потоки, будут синхронизированы с чем-то еще, в этом случае другой поток.
параллелизм Параллелизм означает, что приложение выполняет несколько задач одновременно (одновременно). Ну, если компьютер имеет только один процессор приложение не может сделать прогресс на более чем одной задачи в то же время, но более чем одна задача обрабатывается одновременно внутри приложения. Он не полностью завершает одну задачу, прежде чем начать следующую.
параллельность Параллелизм означает, что приложение разбивает свои задачи на меньшие подзадачи, которые могут выполняться параллельно, например на нескольких процессорах одновременно.
параллелизм и параллелизм в деталях Как вы можете видеть, параллелизм связан с тем, как приложение обрабатывает несколько задач, над которыми оно работает. Приложение может обрабатывать одну задачу одновременно (последовательно) или работать над несколькими задачами одновременно (одновременно).
Как вы можете видеть, приложение может быть одновременно, но не параллельно. Это означает, что он обрабатывает несколько задач одновременно, но задачи не разбиваются на подзадачи.
приложение также может быть параллельным, но не параллельным. Это означает, что приложение работает только над одной задачей за раз, и эта задача нарушена вниз на подзадачи, которые могут быть обработаны параллельно.
кроме того, приложение не может быть ни параллельным, ни параллельным. Это означает, что он работает только над одной задачей за раз, и задача никогда не разбивается на подзадачи для параллельного выполнения.
наконец, приложение также может быть как параллельным, так и параллельным, поскольку оно одновременно работает над несколькими задачами, а также разбивает каждую задачу на подзадачи для параллельного выполнения. Однако некоторые из них преимущества параллелизма и параллелизма могут быть потеряны в этом сценарии, поскольку процессоры в компьютере уже достаточно заняты либо параллелизмом, либо параллелизмом в одиночку. Сочетание этого может привести только к небольшому увеличению производительности или даже потере производительности. Убедитесь, что вы анализируете и измеряете, прежде чем принимать параллельную параллельную модель вслепую. От http://tutorials.jenkov.com/java-concurrency/concurrency-vs-parallelism.html
ПАРАЛЛЕЛИЗМ ПРОТИВ ПАРАЛЛЕЛИЗМА: параллелизм в один момент времени только одна задача может быть выполнена. пример: один процессор параллелизм в один момент мы можем выполнять несколько задач. пример: двухъядерный или многоядерный процессор
параллель : это широкий термин, который означает, что два фрагмента кода выполняются "одновременно" до такой степени, что параллельное выполнение становится "реальным". Звучит расплывчато и упрощенно? Да. Я пытаюсь помочь вам сосредоточиться на различия между этими понятиями, а не предоставление каждого отдельного техническое определение.
поэтому я написал "реальный", потому что параллелизм может быть смоделирован в определенной степени. Многие системы, например игры, реализуют "параллельные" подсистемы, которые выполняют множество задач во время каждого цикла выполнения (например: некоторые из них широко используют агенты), но в большинстве случаев они параллельны только в том смысле, что каждый из них делает свою маленькую вещь в no более порядок, доступ к данным, казалось бы, случайным образом, и даже если вы реализовали какой-то примитивный программныйкооператива многозадачность, чтобы организовать все это, это все еще не действительно параллельный. Это просто очень сложная последовательная система.
вы можете сказать, что параллелизм становится реальным, когда есть сторонняя система (будь то базовая упреждающая ОС, предлагающая потоки или ядра процессора), специально разработанная для запуска кода в черных ящиках ,которые вы не можете контролировать (за исключением времени их запуска и результата, который они производят, плюс любые мьютексы или семафоры, которые вы можете бросить)
одновременно : не может быть параллелизма без параллелизма (будь то имитация или реальная, как я объяснил выше), но этот термин акцентирует внимание конкретно на том, что две системы будут пытаться получить доступ к тот же ресурс в то же время в какой-то момент. Это подчеркивает тот факт, что вам придется иметь дело с этим.
асинхронные: все правы, говоря, что асинхронность не связана с параллелизмом, но она прокладывает путь к нему (бремя на вас, чтобы сделать вещи параллельными или нет-продолжайте читать).
вы можете увидеть эту концепцию как способ представляют параллелизм путем формализации трех основных вещей, обычно участвующих в параллелизме: 1) Определите инициализацию задачи (скажем, когда она запускается и какие параметры она получает), 2) что должно быть сделано после ее завершения и 3) что код должен продолжать делать между ними.
но это все еще только синтаксис (обычно он представлен как методы обратного вызова). За кулисами, базовая система может просто решить что эти так называемые" задачи " - это просто фрагменты кода, которые накапливаются до тех пор, пока он не завершит код, который он в настоящее время выполняет. А затем он распаковывает их по одному и выполняет их последовательно. Или нет. Он также может создать поток для каждой задачи и запускать их параллельно. Какая разница? Эта часть не входит в понятие;)
здесь я объясняю с некоторыми примерами
параллелизм
A веб-сервиса получает много маленьких запросов в режиме реального времени, и он должен обрабатывать каждый из этих запросов по-разному, а также независимо от других запросов.
- много задачи выполнены
- на в режиме реального времени
с различными последовательностями выполнения (может быть несколько задачи ни один задание можно работать по-разному в каждом вызове)
существенно сокращает время отклика
параллельность
A GPU использует параллельную обработку в процессе тот же блок кода (он же ядро) на тысячи физических и логических потоков. Каждый вызов ядра иногда используется другой блок памяти для чтения/записи оперативный. В идеале, процесс начинается и заканчивается для всех потоков одновременно. Одно ядро процессора без гиперпоточности не может выполнять параллельную обработку.
- один ядро выполняется на нескольких процессорах
- одновременно
- С одной последовательностью выполнения (есть один ядро в каком ветвлении или если избежать)
- существенно возрастает скорость
асинхронные
один тяжелый процесс (как операция ввода / вывода) может легко блок GUI если он запущен в потоке GUI. Для того, чтобы гарантировать UI отзывчивость, тяжелый процесс может быть выполнен асинхронно. Лучше запускать подобные асинхронные операции один раз. например, несколько операций, связанных с IO, могут быть значительно медленнее, если они выполняются одновременно, поэтому лучше очереди их закончить, чтобы начать
- один задание или пакет задач выполняется в другом потоке
- один раз или один-на-времени
- последовательность выполнения не имеет значения / применяется, потому что нет параллелизма
- существенно снижает скорость, но обеспечивает отзывчивость к другому потоку
Примечание: асинхронная операция, которая является выполняемая одновременно (т. е. более одного раза за раз) является параллельной операцией.