Асинхронный против многопоточности - есть ли разница? - PullRequest
126 голосов
/ 02 марта 2009

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

Всегда ли асинхронный вызов создает или использует новый поток?

Википедия говорит :

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

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

Ответы [ 11 ]

1 голос
/ 20 марта 2018

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

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

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

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

Подробнее здесь - https://blog.slaks.net/2014-12-23/parallelism-async-threading-explained/

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