В чем плюс ассинхронного программирования?

Раньше я думал, что асинхронность нужна только медленному вебу, когда запрос не должен вешать всю остальную обработку. Однако оказалось что и для десктопа есть библиотеки вроде этой https://github.com/Reactive-Extensions/Rx.NET

Вопрос. В чем преимущества и недостатки у данного подхода? Код поддерживать сложнее становится? Где целесообразно применять, а где будет мешать?
  • Вопрос задан
  • 631 просмотр
Пригласить эксперта
Ответы на вопрос 5
Stalker_RED
@Stalker_RED
Дело в том, что... нет никакого "синхронного" программирования. Процессор сам по себе - асинхронный. Там под капотом прерывания, переключения контекста, вот это всё. А синхронность - просто иллюзия, созданная для того, чтобы "облегчить" написание программ.

https://habrahabr.ru/post/216659/
https://habrahabr.ru/post/201826/
Ответ написан
@nirvimel
Реактивное программирование - еще один buzzword, под которым обычно понимается Модель акторов, еще один подход к параллельным вычислением, альтернативный классическим потокам (потоки, разумеется, используются внутри под капотом, но отсутствие необходимости в ручном использовании блокировок избавляет от многих потенциальных ошибок и тяжелых последствий в виде race conditions и deadlocks).

Все это имеет мало общего с асинхронностью в однопоточном (!) Javascript, которая не дает никакого распараллеливания вычислений.
Ответ написан
Комментировать
iCoderXXI
@iCoderXXI
React.JS/FrontEnd engineer
Десктопные приложения я писал очень давно, еще под DOS на Clipper 5.2, а до того вообще на Borland Pascal 6/7. Как только в коде появлялся мало-мальски долгоиграющий расчет, интерфейс зависал и интерактив сводился к нулю.

Как мне кажется сегодня очень замечательно можно асинхронно и многопоточно разделять интерфейс от всяких долгоиграющих процедур, дабы пользователь не думал, что компьютер подвис.
Ответ написан
@res2001
Developer, ex-admin
Преимущества асинхронного IO по сравнению с потоками в отсутствии накладных расходов на содержание потоков. Но программировать AIO довольно сложно, можно сравнить со сложностью программирования многопоточных/многопроцессных приложений.
Из жизни: апач - потоки, nginx - AIO. Т.е. при правильном подходе выигрыш от AIO выше, чем от потоков.
Использовать следует в приложениях, где много операций ввода-вывода.
Ответ написан
Комментировать
@lega
В чем плюс ассинхронного программирования?

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы