LINUX.ORG.RU

История изменений

Исправление rsync, (текущая версия) :

Потому, что асинхронный алгоритм != синхронному

это почему это?

когда я в корутине пишу


results = []

for url in urls:
   resp = await http.get(url)
   results.append(resp)

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

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

Если корутина (таск) всего одна, то код из асинхронного вырождается в синхронный

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

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

Исходная версия rsync, :

Потому, что асинхронный алгоритм != синхронному

это почему это?

когда я в корутине пишу


results = []

for url in urls:
   resp = await http.get(url)
   results.append(resp)

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

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

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

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