Введение в изоляты в Dart
Программа на Dart выполняется в изоляте - отдельном контуре с собственной кучей. У каждого изолята своя память: переменные одного изолята не видны другому и не меняются напрямую из чужого кода.
Чтобы передать данные, изолят отправляет сообщение через порт. Значение копируется при отправке, а не разделяется между участниками. Общей переменной и блокировки для такого обмена в языке нет.
Тяжелую работу часто выносят во второй изолят,
чтобы основной поток не простаивал на длинном
расчете. Связь строят на ReceivePort,
SendPort и Isolate.spawn из
библиотеки dart:isolate.
Примеры этого раздела рассчитаны на виртуальную
машину Dart на компьютере. В браузере и в DartPad
такой запуск изолята с dart:isolate
обычно недоступен, поэтому код нужно проверять
локально через dart run.