Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Непонятно с async-await в C# - 2

05.09.21 08:40
Re: Непонятно с async-await в C# - 2
 
alex445 свой человек
в ответ Бесконечный цикл 04.09.21 21:49, Последний раз изменено 05.09.21 08:53 (alex445)
Это не интерпретация - это основы. А интерпретация это как реализовано с C#, Python или других языках или либах. Поэтому я и говорю, что лучше все-таки разобраться в основах, чем как это реализовано в каком-то языке. По крайней мере когда я въезжал в тему, мне так было существенно быстрее.


Вот ссылки: Coroutine, Event_loop

Die Sache ist, что они предоставляют набор правил ("делай так и не делай так") для обращения с чёрным ящиком async/await. А вы пытаетесь туда залезть и понять суть. Да ещё суть не конкретного чёрного ящика, а целой группы похожих чёрных ящиков. А суть в конкретном ящике могут со временем заменить, не заменив правил. И тогда понимание сути устареет. Тем более, понимание сути для всей группы ящиков.


Вы - разработчик на определённых уровнях абстракций. Как устроено внутри - не ваше дело. Если вам надо знать, как устроено внутри не из-за любопутства, а чтобы понять эти абстракции, значит абстракции плохие и их нужно заменить. Ну типа как управление автомобилем (пусть это будет ручная коробка и инжектор) - у всех примерно одинаково, с небольшими нюансами на холостые ходы педалей, руля, силы нажатия. Но суть одна, и научившись ездить на одном, вы почти так же поедете на другом. А если вам надо обязательно лезть под капот или разбираться с системой впрыска конкретного инжектора, чтобы просто поехать - нафиг такие абстракции. Я не имею ввиду, скажем, идеальные профили разгона и управления в заносах - это у каждой машины своё, и чтобы использовать её по максимому, надо к ней привыкать.


Но в любом случае, async/await не заменяет нормальную работу с потоками (Thread, lock, всякие MemoryBarrier и прочее).
Ну понятно что не заменяет - это разные модели.

Новичку, да и середнячку сложно сразу понять, где заканчивается банальная асинхронность и начинается настоящая многопоточность. Многие новички пытаются писать на async/await код, который скорее выглядит как многопоточный, чем асинхронный, и проваливаются. Как я говорил, лучше в тьюториалах иметь более-менее исчерпывающий набор типичных use cases для async/await и за него сильно не выходить, чем просто вываливать на людей набор правил и делайте с ними что хотите. Создатели async/await наверняка сами прорабатывали эти use cases - для чего они вообще эти конструкции языка делают. Иначе это превращается в хождение по граблям даже для сеньёров, не то что новичков.

 

Перейти на