четверг, 2 июня 2016 г.

Асинхронные функции C# - как работает await/async

Префикс await по сути своей создает отдельный поток (№13 в нашем случае), который ставиться в пул CLR и ожидает когда основной поток ( №10) передаст ему управление:





а когда асинхронный поток ( в данном случае №1) получил данные и основному потоку они понадобились, то в этом случае этому отдельному потоку и передается управление



подробнее в видео 


итак - а как же это устроено внутри ? Давайте посмотрим во что разворачивает функция HttpLenghtAsync:


как мы видим создается "машина состояний" (state machine) - приближенное подобие класса для данной машины мы видим как структуру HttpLengthSM. Все параметры передаются как локальные переменные (синим цветом)

Комментариев нет :

Отправить комментарий