TGViewer
Flutter. Много Flutter. Много @flutter_amiga · 2.96K subscribers
Post #39 1.43K
Dart: асинхронность и многопоточность

Hola, Amigos! На связи Антон Мартышков, Flutter-разработчик Amiga. Сегодня я расскажу о возможностях в языке Dart, которые мы используем для написания кроссплатформенных приложений на Flutter.

Эта небольшая заметка о том как, работает асинхронность и как можно выполнить код в другом потоке (изоляте). Внутренние механизмы не раскрывались специально, так как тогда получится большая статья, а оно нам тут не надо. Для этого есть Habr.

Потоки

Язык Dart однопоточный и исполняет только одну инструкцию. Но есть изолят — это аналогия привычного нам потока, но есть одно отличие — изоляты не разделяют память. Изначально приложение работает только в одном изоляте. Но с ростом приложения вы заметите, как пользовательский интерфейс и анимации начнут притормаживать, так как отрисовка происходит в главном потоке. Значит где-то в коде выполняется длительная операция, которая блокирует отрисовку, пока операция не завершится.

Для этого мы создадим новый изолят и поручим ему выполнять длительную операцию. Тогда наш главный поток сможет заниматься интерфейсом.

Общаются изоляты через порты и не знают друг о друге ничего (поэтому и зовутся изолятами). Работаю эти порты со списками и коллекциями из примитивов. И конечно же не забывайте очищать память, удаляя изолят когда он уже не нужен, если не создавали его через метод compute().

Асинхронность

Асинхронность — концепция программирования, когда результат функции помеченной как async будет возвращен не сразу. Код следующий за вызовом этой функции может продолжать свою работу или ожидать ее завершения, если перед ней было специально слово await. Асинхронный метод выполнится синхронно, но тогда, когда некий внутренний механизм (Event Loop) возьмет его в работу, чтобы не навредить другим операциям.

Подытожу:

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

P.S. Подробнее об асинхронности и многопоточности можно почитать тут.
dart.dev Concurrency in Dart Use isolates to enable parallel code execution on multiple processor cores.
  • 👍 12
  • 🔥 4
  • ❤ 1
  • 👌 1
More from @flutter_amiga
  1. Sep 9, 2026AI BOOST’26: выручка падает — что делают крупные digital-агентства и при чем здесь AI 22–2…
  2. Aug 18, 2026Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Сегодня посмотрим на чек-…
  3. Aug 13, 2026Hola, Amigos! Сегодня вышли Flutter 3.47 и Dart 3.13. Давайте вместе разберемся, что в них…
  4. Jul 31, 2026Дайджест июля Hola, Amigos! Собрали в одну подборку все полезные посты июля, которые вы мо…
  5. Jul 28, 2026Hola, Amigos! Сегодня посмотрим на один пакет, который может быть полезен в разработке - p…
  6. Jul 24, 2026Hola, Amigos! Сегодня мы вводим новую рубрику - обзоры правил для статического анализатора…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →