TGStat
TGStat
Type to search
Advanced channel search
  • flag English
    Site language
    flag Russian flag English flag Uzbek
  • Sign In
  • Catalog
    Channels and groups catalog Regional compilations Thematic compilations Платные каналы Search for channels
    Add a channel/group
  • Ratings
    Rating of channels Rating of groups Posts rating
    Ratings of brands and people
  • Analytics
  • Search by posts
  • Telegram monitoring
  • Promotion
    Advertising through Yandex Business Advertising in channels through TGStat Agency Advertising on TGStat.ru website
Папочка Разработки

15 Sep, 10:03

Open in Telegram Share Report

За что отвечает ключевое слово async?

У каждого спрашивали на собеседовании про модификатор async, большинство слышали про стейт-машину и на вопрос «а зачем же оно всё надо» ответят примерно следующим образом:

Ну… Это значит, что метод развернётся в стейт-машину, там свитч ещё будет, ну и метод вообще асинхронный, а это значит, ждать не будем.


Чего? Я понимаю, что у нас всё всегда упаковывается в паттерны, а для всего уже придумали модные термины, но тут всё намного проще.

Запоминайте раз и навсегда, чтобы не умные термины учить, а понять 🌟.

В обычный метод поток заходит, делает какие-то дела и выходит — всё, после этого следов выполнения не осталось, а они и не нужны, ведь задача уже готова.

В асинхронный метод потоку НАДО УМЕТЬ зайти, прервать (уметь — не значит прервать, это уже от await зависит) выполнение в какой-то момент, выйти, а потом вернуться в то же место.

Зачем?

Например: мы в середине метода хотим сделать запрос к БД, который вернёт нам кучу строк и будет выполняться пару секунд.

Конечно, можно повисеть в середине метода и подождать, пока БД вернёт ответ, но это потоку надо прям висеть и ждать, а он не на помойке себя нашёл и может потратить это время более продуктивно.

А эта БД пусть сама скажет, когда закончит. Тогда какой-нибудь поток и отправим продолжать выполнение метода.

За счёт этого во время асинхронной операции ввода-вывода (это как раз наш запрос к БД) не занят ни один поток приложения.


Всё. Вот для этого механизма и нужны стейт-машины, свитчи и мув некcты, которые под капотом это всё делают. Если нет понимания идеи, то знания про стейт машину бесполезны

1.4k 0 14 5 35
Catalog
Channels and groups catalog Channels compilations Search for channels Add a channel/group
Ratings
Rating of Telegram channels Rating of Telegram groups Posts rating Ratings of brands and people
API
API statistics Search API of posts API Callback
Our channels
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Read
Академия TGStat Telegram Research 2019 Telegram Research 2021 Telegram Research 2023
Contacts
Справочный центр Support Email Jobs
Miscellaneous
Terms and conditions Privacy policy Public offer
Our bots
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot