Не очень понимаю как это должно выглядеть на примере кода.
Асинхронность - может выполняться в рамках одного потока - как? Не создавая новый поток, запустить задачи асинхронно, через GOTO? Не представляю схему.
Параллельные вычисления - вычисления которые не зависят друг от друга, понимаю суть, мы создаем новый поток, который выполняется в рамках (другого потока ОС или железа - правильно?) и работает независимо от потока, который его создал. При этом между ними может происходить синхронизация данными, но ни один из потоков не прерывается и не заканчивает исполнение?
Грубо говоря чем отличается:
new Task(any_asyncMethod)
от простого async await метода?
Гуглил, лишь больше запутался, понимаю на схематическом уровне, даже понимаю на примерах, но не понимаю на уровне кода.
Другие языки программирования и технологии
Текущая разница между Асинхронностью и параллельными вычислениями?
Папаллельные вычисления - ты запустил, и они выполняются.
Асинхронность - это ожидание некоего сигнала. Прерывание. Сигнал пришёл, функция выполнилась. Всё. Но, в принципе, да, асинхронное выполнение редко бывает без многопоточности. Но может быть основанно на внутренних прерываниях.
Асинхронность - это ожидание некоего сигнала. Прерывание. Сигнал пришёл, функция выполнилась. Всё. Но, в принципе, да, асинхронное выполнение редко бывает без многопоточности. Но может быть основанно на внутренних прерываниях.
Said Amirov
А кроме как с низкого уровня напрямую управляя прерываниями в ЯП высокого уровня реально провернуть асинхронный вызов под один поток?
Асинхронность это неявный автоматический параллелизм. При вызове асинхронной функции отдельный поток создается и управляется автоматически.
Ассинхронность никак не относится к потокам или протоколам. Синхронность или асинхронность это всего-лишь парадигма.
Передача данных может реализоваться как синхронным образом (с блокировкой процесса до тех пор, пока не придет респонс). Банальный пример TCP.
Или же как в UDP ты посылаешь данные по принципу fire and forget. И в скольки потоках или целых процессах ты это будешь делать - уже не важно. А вот на серверной части прием этой "асинхронности", в любом случае будет блокировать поток на listen'e.
Асинхронность конечно можно реализовать и с синхронными элементами, к примеру MQTT
Передача данных может реализоваться как синхронным образом (с блокировкой процесса до тех пор, пока не придет респонс). Банальный пример TCP.
Или же как в UDP ты посылаешь данные по принципу fire and forget. И в скольки потоках или целых процессах ты это будешь делать - уже не важно. А вот на серверной части прием этой "асинхронности", в любом случае будет блокировать поток на listen'e.
Асинхронность конечно можно реализовать и с синхронными элементами, к примеру MQTT
Said Amirov
вооо, я так понимаю это ближе к определению веба.
Я понимаю парадигма да.
Ноо тут скорее вопрос, в чем разница между асинхронным и параллельным вызовом )
Я так понимаю разница только в том, что параллельный обязательно должен работать в другом потоке.
Я понимаю парадигма да.
Ноо тут скорее вопрос, в чем разница между асинхронным и параллельным вызовом )
Я так понимаю разница только в том, что параллельный обязательно должен работать в другом потоке.
Короче так... асинхронность и параллельные вычисления по сути под капотом одно и тоже
new Task - создает задачу в отдельном потоке
asparallel это уже Linq, который позволяет получать доступ к коллекциям параллельно
Грубо говоря указываешь степень параллелизма - 4. Коллекция делится на 4 равные части, на каждую часть создается отдельный поток и в этом потоке идет обработка коллекции с конкретного индекса по конкретный индекс массива не трогая остальные.
new Task - создает задачу в отдельном потоке
asparallel это уже Linq, который позволяет получать доступ к коллекциям параллельно
Грубо говоря указываешь степень параллелизма - 4. Коллекция делится на 4 равные части, на каждую часть создается отдельный поток и в этом потоке идет обработка коллекции с конкретного индекса по конкретный индекс массива не трогая остальные.
Похожие вопросы
- Вычисление суммы с факториалом в С++?
- Как программировать задачи такого типа: вычисление неопределенного интеграла, нахождение собственных чисел матрицы....
- Вычислить arth Есть ли формула для проверки правильности вычисления .и правильный ли код?
- Вычисление суммы ряда на c++
- Вычисления с некоторой точностью
- Вопрос по информатике. Почему точность вычислений в С определяется только 16 знаком после запятой и почему именно 16?
- [SQL-Access] Как вычесть текущую запись поля из предыдущего?
- вычисление по IP адресу, вопрос
- составить программу вычисление 2**64(два в шестьдесят четвёртой степени), на паскале, с помощтью циклов
- Каким образом программисты находят уравнения для вычисления значений?